Currently i think the only way to modify loadout save data is with the EquipProduct function, which you have to call 22 times in one frame to equip an entire preset. Something in that function might be causing random crashes when you call it multiple times in one frame.
SetPreset(const LoadoutSetWrapper &), SetPresets(const LoadoutSetWrapper &) hopefully the function can just modify the save data and then the view can be updated just once after that.