Again, to my knowledge, this is the way it goes using FM. And if you think about it, any program has to check specific criteria every time a program is opened or user is changed.
I store all important user setting in global fields with the startup script. And I have a script called CLEANUP that erases the values to all those fields on the shutdown or when changing users. I also have a script step that checks to make sure that all VITAL fields don't have any values when the file is opened to make sure nothing is carried over from one user to another, and another script step to make sure that all VITAL fields have data in them at the end of the startup script.
My start up script takes about 1.5 seconds on local network, which considering all the stuff it does, and all the value it adds to the users experience, I think isn't to shabby.