Railfan does not use freeroam, because it terminates successfully after X minutes. I am working on a lua script that will do exactly this and better. The only thing I cannot do is create an invisible engine, but personally I don't mind.
I'll let you know when this is finished.