Ok it just needs some tweaking.
In the first event you dont pick a specific spawner so construct picks all of them.
So it will set ALL spawners to "enemyingame" true.
In the destroyed event you just set 1 spawner to "enemyingame" =false.
Thats why just one works.
You need to tell the event on which spawner the enemy has spawned.
The second problem is a bit more tricky.
You need to tell the spawner that it isent on screen to "reload" it.
At least thats what i understand you would like to have.
So i guess you will need another variable calles "readytospawn" or something like that.
If the spawner spawns "readytospawn" set to false.
If the spawner is NOT on screen set "readytospawn" to true.
if "readytospawn" =true and "enemyingame" = false and spawner on screen then spawn new enemy.