To make those blocks disappear after collecting them, yes, I'd make them a func_wall_toggle and trigger them along with the wall blocks. A multi_manager would help with that, as well as for adding sounds.
If your walls are entirely made of entities, then yes, you will have to have a non-entity brush sealing them off from the void. I'd keep that brush up against the walls (that is, don't just drag a big ol' box around everything) so that you're not wasting any resources.
For what you seem to be going for, what you've got going at the moment is probably the ideal way to do it. However, when the walls are made up of so many separate brushes, you might run into framerate issues. I'm not really knowledgeable about how much you can cram into goldsrc before you start running into that on modern computers, but if you enter
r_speeds 1 and
developer 1, you'll see that even in that small, rectangular room, you're hitting over 2000 wpolys (which is quite a lot). If, when you're building your map proper, you start to run into poor framerate, you'll probably have to make some changes. I'd definitely put the
null texture on any faces you can't see if you're not doing that already, since that will help ensure the engine isn't trying to render things it can't see.
If that isn't enough, you could make your blocks bigger, or design the levels such that areas you aren't looking at as much are made of a neutrally coloured block texture that doesn't have to change (and thus are not made up of small blocks). Exactly what you do is up to you, and with luck, it won't be a problem either way.
As for things that happen on a round reset, I can't help much there, as I don't map for CS. You're definitely not the first person to have that kind of trouble though, so maybe try searching the site. I'm sure that info is on here somewhere.