Divide your Level into small cubes.

Example:


Use the position of the camera and the look-vector to determine the hit cubes. Each spawnpoint can create the enemies except the spawnpoints inside of the hit cubes.

The calculation could be multithreaded.