Currently, a watchdog timer is used. The Arduino Pro Mini knockoffs seem to only accept 2s intervals, which seem too short for my use case.
However, could it be possible to put the Arduino into deep sleep, and wake it up with an interrupt triggered by the reed switch? (both rising and falling?) This would basically solve the battery problem. Disadvantage: no intermediate checking of the state, so if one interrupt is missed, a corrupt state is maintained.
Possibly interesting hardware: https://www.sparkfun.com/products/10617