bn880, in developing CoC_NS, came up with some details that might be of use:
when you PV lots of variables at approximately the same time, they get loaded on the same datagram, which actually improves bandwidth utilization. So I do, for example {publicvariable _x} foreach ["PV1", "PV2", "PV3"]. So open up your max frame size. Andf or best bandwidth usage, the variable names should be as short as possible. Still, if you dump a ton of PVs, you're going to get throttled.
As for "guaranteed packets" being throttled by the (directplay-based) MP engine-- yes, that's true, and I don't know what to say, but to lament it.
For UA, which at initialization fires a ton of PVs, I space the PVs out, doing say five at a time. Still, if someone's bandwidth is insufficient, it's not going to work. The goal is to get that "low-bandwidth failure" point to occur at the same time as the "impossible desync" level.
Bn880 may talk about this in his CoC_NS documentation.