You could create another script attached to an empty GameObject that will help to count the number of enemies in the area. When the ‘total number of enemies’ is below the maximum number of enemies, you can instantiate your enemy from the GameObject or a specific spawnpoint.
In your enemy script, when your enemy health = 0, you can access the script attached to the empty GameObject using 'GetComponent(“myscript”)" and subtract the current number of enemies by 1. Then destroy your enemy transform. Add a bit of time between your subtraction with ‘current number of enemies’ and destoying your transform with "yield WaitForSeconds(float).
A tiny modification based on your script.
Basically it simply records the position when your character started. And when it’s health reaches 0, it is teleported to the starting location with max health.