You could also create a GameInstance or World subsystem that handles the chest timers.
Have the chest record its last opened time in the subsystem, and have the chest check on every interaction or based on distance (if you want to set the visual to opened/closed).
Whenever you close and reopen the game, have the subsystem save/load the data and if necessary pre-calculate the time the chest should be available again.
As for the timer. Have a timer in your subsystem run to the next first time, invoke the delegate and reset timer to the next. That way you also have just one timer running the whole subsystem.
Hope this helps.