Hard and soft references in a multiplayer FPS

I am currently learning about hard and soft references, and am trying to optimize memory for my UE 5.6 multiplayer FPS game. I have ended up in one of those classic situations where I have a massive dependency chain, so every blueprint now has a memory size map of over 3.5 GiB and basically loads the entire game into memory. So now everything is always loaded, and nothing ever gets unloaded. Let’s just say I‘ve earned the hard way why over-abusing the cast node and hard references is bad, since it loads other blueprints into memory and can very quickly explode the dependency graph if not handled correctly.

As far as I understand with my current knowledge, the best way to break dependency chains is to use a mix of native references, blueprint interfaces, event dispatchers, and soft references, in places where hard references can be avoided.

But for a multiplayer FPS, I’m not sure what should be soft references and what should remain hard references. I have heard mixed advice, but it seems that if the object/class should always be active all the time, and is critical to the game (like the player), then it should be a hard reference. If it is something that you spawn in and destroy and does not need to be in memory 100 % of the time, then it should be a soft reference.

But soft references also take time to manually load into memory, so I was thinking, how does this rule apply to a multiplayer FPS - where reaction time and instant feedback is very important?
What can realisticaly be turned into soft references?