@Bill.Thomson discovered, and I’ve integrated into our EProm library, EEWL. It’s a wear-levelling library for EEPROM.
As I’ve got it at present - and we’re still testing - it receives the accumulated energy and pulse values from the sketch each time the data is sent to emonCMS, but it only stores them in the EEPROM when any one goes above 200 units (i.e 200 Wh or 200 pulses) from the last time the values were saved. I chose 200 as that represents a relatively insignificant value, both in terms of the units used for billing and in monetary value. In the event of a power fail or reset, the sketch can recover the last saved values - meaning that a maximum of 10 s worth plus 200 units might have been lost.
Given that it’s safe to allocate ¾ of the EEPROM to this (retaining ¼ for the calibration etc), under normal use I envisage an EEPROM life of around 60 years. That should be adequate.