Does `GetFreeDockingPort` use any ship-instance-specific information? Could it just take a ShipType? That would avoid allocating and initialising a Ship object that will be deleted again if there isn't a docking bay available.