Messy! (And in LoRaWAN 1.1 the DevNonce needs to be incremental, so would require you to persist state anyhow.)
Persisting state, or choosing a low power sleep mode that keeps state, is really the way to go for any LoRaWAN device.
(Aside: you need to store much more state, not just the uplink counter, especially when using ADR, or when using a region that sends network settings after an OTAA Join.)
You won’t get a different response there.