Star systems were procedurally generated, and in effect are hard-coded at this point. Moving a carrier isn't as simple as a player jumping into an instance of a system, but rather the carrier having to be added into the hard-code so that it is available in all instances. It is as much a software limitation (becoming a hard-coded game object) as it is a hardware limitation (processing time).
When a lot of players want to move their carriers at once, which happens after a major update, the queue time is extended, not necessarily because of the processing time, but to give a buffer time period so that the software can recognise what carriers are where. The number of carriers orbitting around an object are limited. So when you select a new available destination, the system will flag a -1 to availability on the new destination AND a +1 on your current placement.
There is then the matter of where in the new placement your carrier will go, as others will also be moving in and out. It's not just a case of move object, what will basically be happening is your carrier's entire data profile is being copied over someone else's or a blank, while at the same time someone else's is being copied elsewhere, all the while backups being made in case of server crashes or power cuts or any number of things that can go wrong.
It's not just a lot of data to process, it's also ensuring the integrity of the hard-coded data that already exists. That might not seem like a satisfying answer, but it is the price paid for having a 1:1 recreation of the entire galaxy.
Edit: Just to add and emphasise the point: In the background, when a carrier jump happens, in effect content is being added and removed from the game without any downtime or patches on a constant basis. As much as the wait times are annoying, and the bugs are annoying, that feat alone is some pretty damn impressive coding by FDev and worthy of some praise.