you could probably save balance of each address whose balance was changed by a transaction in a block at each height.
While I may not have spelled out the exact process, this is effectively what I intended.
If a balance hasn't changed, there is no need to store another record for it since you already have the balance and the block height where that balance was established.