Thank you for sending the save! Tracked it down; looks like the culprit is Vayra's Ship Pack. I'm not sure as to there being a workaround in the case of your save - if you disable the mod, ships will be missing (though that *may* work? the game should put in Nebula-class liners in place of missing ships). So I guess that's worth a shot. (Edit: ah, tried it, doesn't work because the mod also supplies weapons, and the game can't handle those being missing. Never mind.)
Details of problem follow:
In the mod's data.scripts.hullmods.VayraLootedTpc class, it's calling:
member.setVariant(Global.getSettings().getVariant(member.getHullId() + VARIANT), false, true);
In this case, for whatever reason, that ends up being null - there's no such variant. The hull this is happening for is "vayra_mudskipper_xiv_Hull".
Furthermore, that hullmod class has the following static data member:
public static HashMap<FleetMemberAPI, Boolean> ALREADY_SET = new HashMap<>();
That's more than likely a memory leak. This data member is static, meaning it persists across save-game reloads. FleetMemberAPIs reference other stuff so this looks like a full-campaign leak, probably possibly for it to happen multiple times over per session.
Repeating myself a bit, but, right: do not put stuff into static data members, it is very bad and is asking for a memory leak. You really need to know what you're doing and even then it's risky. If there's *any* uncertainty, don't do it. (If there's no uncertainty, also don't do it, because complete certainty is a warning sign in and of itself.)
I didn't check other hullmods or classes in the mod to see if they may cause similar issues.