As I understand it, the easiest way to track all of the data is to add variables into the GameMode, as that would remain consistent between level loading. Alternatively, you could/should use a Savegame state, as it will need to record all of this data for when you save. Adding a temporary Savegame into the GameMode would keep you from having to have two copies of the data in memory during saving, and you can simply pass the GameMode’s Savegame data directly into or from the Savegame slot, reducing the locations that would need to read/write the data when something happens.
That’s what I would do, at least.