I get why worrying about exploits in a single-player game isn't really all that important. After all, if a player wants to cheat in a single-player game, who cares. The fact that you could spam troops round after round by emptying out carriers and using instant refit, potentially making dozens per turn anywhere you need more troops, it's only your own game that you are cheesing if you use the exploit.
That priority thing though would be nice though. I guess if I was coding it, I would just try to implement "first to load, last to unload" on armed troop carriers. I suppose the best way to it would be; When player clicks on down arrow (on the population window in planet view), if there is a troop in a basic trasport draw from there. When player clicks on up arrow on planet view, if there is an empty armed troop transport, send troop there." This behavior is reversed for civilians. After each planetary invasion where troops die, you can reshuffle where troops are, filling armed ships first, then assigning the rest to the basic transports. Having different troop types can make it confusing, but you can prohibit any reshuffle that would change troop types. Having tanks fill up your ships that should have space marines would actually be annoying, so if you have multiple troop types, you could still end up with empty armed ships and filled basic transports, if they had different troops involved.