There will probably be many opinions on this, its up to you.
IMHO, hundreds of little spawns will be 'messy' at map design time,
and possibly CPU hungry, but it may be suitable in some cases...

My preferred option is yours. Create some invisible & passable 2d models that
"fit" various sections of flat/open ground.
This includes inside buildings etc. By open I mean no furniture, walls, etc.
These are your spawn regions.
Their actions will spawn zombies in random locations within that region.
One action per region spawning random numbers of zombies based on the region size.
As each zombies is 'spawning', you can use something like my previous code to see if its 'safe' to spawn there.
If it passes the "in-sight" test, then spawn the sombie and instantly get it to do
a c_rotate of 360 degrees. If it hits anything, UN-spawn that zombie.


"There is no fate but what WE make." - CEO Cyberdyne Systems Corp.
A8.30.5 Commercial