Rather than put the code in here, I'm providing the file. It's a little more hackish than I'd have preferred, but you can see how it works and clean it up if you wish.
It works with 3 objects: Scene Master, Enemy Generator and Bullet Generator. In an inactive scene I created an Enemy object and a Bullet object.
The Scene Master runs the script, which gets the generators, enemy base and bullet base. Every 180 seconds it adds an Enemy at the Enemy Generator position and a Bullet at the Bullet Generator position.
Enemies have a constant speed along the Y axis. Bullets have an unset Steering actuator with a constant speed roughly matching the corresponding Enemy. The Scene Master sets the new Bullet's steering target to the new Enemy. The Bullet then actuates its steering logic and starts chasing its corresponding Enemy.
Something I want to impress upon is that you can't target copies of objects by name. Each time you add a new Bullet or a new Enemy they'll all have the same name (Bullet or Enemy). So when we add the objects to the scene we do it while at the same time equating it to an object. This adds the object to the scene and creates a data object corresponding to the newly added version. This data object can be saved in a scene object's properties and accessed later, even if you add 3000 new versions of the same object.