Efficiently carry out an action ever x seconds.

The cheap and nasty hack would be to replace your ten minute delay with a loop that delays for five seconds and then calls the watchdog, and exit the loop when the ten minutes has elapsed. This avoids any major restructuring to your code.

A far better and more general approach IMO is to restructure your code so that instead of executing the actions and delays in a single pass through loop(), it checks whether any action needs to be taken each time loop() runs. So in pseudocode, your logic in loop() becomes:

If watchdog interval has elapsed since the last watchdog reset
reset the watchdog
endif

If waiting and ten minutes has elapsed
do whatever needs to be done next
endif

and so on.