Thanks Reinis! That's some really great info and from the short tests that I've run so far I think this is going to be the solution.
I used this command as the test:
pid="$(cat /run/nginx.pid)"; kill -USR2 $pid; sleep 10; kill -QUIT $pid
And here is what happened with the reload:
37.0 MiB + 1.4 GiB = 1.4 GiB nginx (3)
495.4 MiB + 1.4 GiB = 1.9 GiB nginx (4)
606.6 MiB + 1.4 GiB = 2.0 GiB nginx (4)
738.3 MiB + 1.4 GiB = 2.1 GiB nginx (4)
40.1 MiB + 1.7 GiB = 1.8 GiB nginx (4)
57.1 MiB + 2.8 GiB = 2.8 GiB nginx (6)
57.4 MiB + 2.8 GiB = 2.8 GiB nginx (6)
1.3 GiB + 1.4 GiB = 2.7 GiB nginx (5)
14.6 MiB + 1.4 GiB = 1.4 GiB nginx (4)
Started at 1.4G and ended at 1.4G. Yay!
I also tested whether it was reloading gracefully (i.e. not killing active connections ) and indeed it is. Yay again!
I'm going to run some more tests tomorrow and modify the systemd script on one of our servers as another test.