net.admin
Turns out the issue was the router and an inability to handle udp packets when it was busy. An interim solution was to switch from udp to tcp as the protocol. ie:
change: proto udp
to: proto tcp-client (and tcp-server respectfully).
I've read there are reasons not to use tcp if possible, but in this case I had to. Doing so resolved the connection issues. The tunnel has been up for days, disconnected and reconnected - all without issue. Also, I've noted the packet loss with udp was around 0.5% in my case. With tcp it's less than 0.1%. I can leave a ping running overnight and have zero timeouts with tcp, the same wasn't the case with udp. My plan is to swap out the tplink router with something that can handle more throughput. The one that's in place now isn't bad, just not up to the task.
If there's anything else to note in this thread I'll add it - or if an admin wants to close it I'm good with that to 🙂