I made some small changes to LMIC so it used the 32kHz external oscillator and a TC on the SAMD21 for its ticks. Leaving this oscillator running in standby mode means LMIC keeps time properly.
See A fork to add SAMD21 standby support to LMIC
Your power consumption will go up due to the always-running oscillator.
I tried using the ULP one that always runs anyway but it wasn’t accurate enough.