if you get dns failure then the vpn tunnel is down (dns blocked on lan), once the tunnel is down natpmp will also fail as it requires a working vpn tunnel to get assigned an incoming port. so the question is, why is the tunnel going down, well there are a number of possibilities, as you mentioned it could be protonvpn getting overloaded, try and choose an endpoint with low utilisation (noticed protonvpn show this in their endpoint selection webpage).
one other thing to mention is that i have code in place to recover from a vpn connectivity failure, so you should see an attempt to re-establish the vpn tunnel and subsequent natpmp calls to get a new incoming port, have you tried simply leaving the container running to see if it recovers?.