Earlier I didn't consider your random numbers issue and I do see how that can be a real problem. If you have N simultaneous threads each using random numbers, I can see how this will break in a multi-player game. In single player it is no issue, but in multi-player it is.
However, are there areas of your code that are CPU intensive and do NOT use random numbers? I notice when I select like 3000 ships and give them a move order, the game halts for a few seconds. All this pathing and whatnot, it does not need to be random does it? It can be parallel as well.
Here is another huge performance problem I found.
1. Get like 2500+ ships in a hostile sector.
2. PAUSE the game.
3. While paused and having all your ships being selected, shift-click on multiple targets, like lightning turrets.
This can take SECONDS between clicks even though "time" is stopped and nothing else is going on. There should not be any random numbers being used here, yet there is some huge computational task going on.
Another thing to look at is if random numbers are actually needed in certain situations. One thing I noticed is the fact that there is a "hit chance" which generally goes very quickly from 0 to 100. I would suggest that this is a prime target for removal. If you are in range, you get a 100% chance to hit, otherwise zero. Now if this is removed, then once a unit has a target, the whole "attack until dead" AI can be parallelized because there is no need for "random" synchronization.