The way I was thinking that it was going to work:

1. receive block (set of heartbeats + set of ack maps)
2. order heartbeats (according to spec, using entropy from the previous block)
3. process heartbeats 1-by-1, putting stage 2 stuff into a function-specific map (IE a map defined within the processing function, and not appearing in any structs)
4. verify storage proofs and create entropy seed out of the function-specific maps

so you never actually pull all of the data out into a struct, and most of the data doesn't get pulled out at all. It's processed once and then discarded. (hashes of updates are saved so that we know which have been processed before)