The biggest limitation that's built up over time is the single-threaded nature of game simulation on Unreal Engine. We run a single-threaded simulation. If you have a 16 core CPU, we're using one core for game simulation and running the rest of the complicated game logic because single-thread programming is orders of magnitude easier than multi-thread programming, and we didn't want to
burden either ourselves, our partners, or the community with the complications of multi-threading.
Didn't know UE5 is still single threaded, that may explain the long shader compilation and micostutters