You could keep it simple to implement and still have the choice of constructors by turning the request-functionality around: Instead of a starbase requesting a constructor you'd have a shipyard sending constructors.
Could work like this: Insert into a shipyard build queue as many constructors of whatever type you wish and check the new choice "send to starbases". When a ship finishes the shipyard automatically sends it to the nearest starbase that can be upgraded. If you also added to this that the constructor automatically upgrades the starbase without asking the player it could all run in the background removing the starbase micromanagement problem.
Several problems with this approach:
1. The "nearest upgradable starbase" may not be the right one. E. g. I build fast constructors to reach far away starbases when there is no suitable shipyard in the vicinity.
2. When there are a lot of modules available which one should a constructor upgrade automatically? Perhaps I need morale boosting modules at an economic starbase first or the starbase is near enemy territory so I have to built up starbase defense first.
3. I usually don't use all and every module available. In my current game I'm already winning, so I don't need to max out attack and defense of every starbase.