Chipping in, I also experience this, or at least something similar. If I replicate a 2TB+ VM with hotadd it absolutely crawls.
From memory when I last looked into this, sesparse forces hotadd to write IO in 4kb chunks vs 64kb chunks when using the old disk format (<2TB). Using NBD with sesparse returns the behaviour to 64kb IO's, but as you mention, you have to run a seperate proxy.
If you view disk IO inside the hot add proxy VM you will see IO's being written at the size of the Veeam job block setting, so its something in the ESXi IO layer (not VMFS as you get the same over NFS as well) which causes the IO's to be split.
Ideally I would like the IO from the proxy to be past down all the way to the storage without getting split, even into 64kb io's, but I think this is a design choice somewhere in the ESXi snapshot code. If there is anything Veeam can do around this, please please please look into it, as we are getting increasing numbers of these large VM's.
Also forgot to mention, when the inital replica copy runs and uses the direct NFS copy, the IO size matches the Veeam job size and gives awesome performace
, so its something around the snapshot behaviour which breaks performance.