I believe I am having this exact same issue. I am using the same board with the same OS version and getting the same hangs. ( If this deserves its own thread, let me know)
Details of my system/problem:
Pi zero H2 running 16.04
Running pihole and pivpn
Installed in case with heatsink
Powered from Samsung 2A charger
Cat6 to router
Running pihole and just doing dns masq, it is stable for days. If I enable dhcp, it tanks within hours. If I turn dhcp on and reboot the router, it tanks as soon as everything hits it simultaneously for an address.
Running openVPN (dhcp disabled), it will run fine if nothing is connected. Once a client connects, it will lock up within 20 minutes.
Heres the interesting part...
I was experimenting last night.
With base load (no VPN clients connected, just serving dns) the system idles just north of 50C. Connecting a client causes a mild increase in temp and system load prior to the hang. However.... I hammered on it a bit with a bemchmark, pulling loads and temps much higher than what it sees before it crashes, and it remains stable.
Here is the output of pimon during that test. There are two drops. The uptick before the first drop is where I connected and openVPN client. After rebooting the system, I did the benchmarking ( the rise in temp and cpu), followed by reconnecting to the VPN before the second crash.