I recommend making FO be an OpenGL/vulkan/whatever wrapper around some scientific graph-based software. Export the graph and graphics API to game code, which would be downloaded on connect to server (similar to how springrts does it). The game code would consist of two parts:
lua/python "gadgets" running on server, handling simulation
lua/python "widgets" running on client machine, handling GUI. All of these should support being turned on/off individually, and no error in any of these should bring the whole client down. As in SpringRTS, players should be able to load their own widgets as they please.
The GiGi replacement would be a port of ChiliUI or some other pure-lua graphics library used by various SpringRTS games.
It is important that the engine neither cares nor knows about any concept of ships, planets, research or production. It would be all handled by game scripts and passed through the network as per-vertex/edge or detached data (e.g. players). The gadget code would decide which data to send to which client.
TS, can you mention one single problem this would address?
In any case, since you have knowledge and experience with Lua and SpringRTS, it would be great if you could work out a prototype, same as o01eg is doing with Godot.
Missing sitreps like ally combat - sitreps would be compiled in client-side lua widgets, based on event updates sent from gadgets to all players with vision there.
Various things that "would require backend changes" to implement such as (probably) ally-assisted invasion, organic hull evolution, ship refits, parts destroyed in combat.
Things that are implemented in a dumb way, like planetary starlanes and stargate.
Overlapping supply and sharing of ally supply
Making the galaxy change over time - starlanes shrinking/expanding as the stars move
Proper implementation of missiles
Launch bays with fighters and mixing of various types of fighters on a single ship
Not sure i understand you: In order to fix some issues that would require some modification of the backend, you suggest rewritting the whole backend, isn't it?