I'm not really sure what EntityFactory even is, so no clue if using that is any better.
But for the hostage approach, here are some informations which I gathered for a pet plugin:
The entity name: hostage_entity
The prop you need to change in order for them to follow a player: CHostage.m_leader <player index>
And yes, you should be able to spawn them ony any map. The just don't like rescue zones (as they will be rescued and removed) so you should remove those if you don't need them (if you use maps that have them)
With this method, you should also think about making them slower (When I tested the pet thing in CS:GO the hostage entity always went exactly to my coordinates, not behind me, which would propably be bad for a ghost)
Also, as you can hit E to make the hostages stop following you, you should hook "hostage_follows" and "hostage_stops_following" and make them follow again in that case
