With regard to the various suggestions regarding abstracted relocation times; my first thought was that this was a lot of work trying to check if the bonuses of a newly assigned commander were active yet, or he was still in transit. The post above made me realise it is a lot easier than that.
If a commander is 'assigned', I create some form of interim assignment record which touches nothing else in the game except flagging the commander as unavailable and recording the intended assignment. In effect, the commander vanishes for a while. When the transit time is up, the new assignment takes place at that point. Until he arrives, the assignment hasn't happened.
Of course, this could get a lot trickier with automated assignments as suddenly thousands of commanders will be running around the galaxy with no one in charge of anything
. Perhaps automated assignments are instant (planned ahead of time by the Administratum) while manual player assignments have transit times.