Nice vid... that's pretty funny timing that the Vintage Knob update was released the next day!

I'm pretty certain that transmitting MIDI CC/NRPN changes would affect all voices on PX/P6, even previous ones held down... since the general CC/NRPN doesn't have a parameter to specify voice number it should be applied to. Though, with some reception of MPE/Polyphonic data, there may be a way for limited ability? I haven't looked into that / tested though... may do some experimentation when I get a chance.
You definitely want to have the offsets held per note/voice to get the best vintage character -- and optimally curated for less dissonance between oscillators in a given voice, and deltas between consecutive voices -- and repeatable as voices cycle through.
One potential FW update solution, short of a full vintage knob implementation, would be if just a "Voices / Voice Spread" source (or a couple of variants of that) could be added as a Mod Source in PX matrix. That
Voice Spread source,
like included on Take 5, is one way to custom route the same type of Vintage Knob variances... ie: it's a curated numeric offset that is held per voice triggered. If there was a "Voice Spread Bipolar" and "Voice Spread Unipolar" source added, that would open up possibility to get pretty deep with voice modeling on PX.
From a FW programming standpoint, it would potentially be easier, since there would be no UI concerns, just a couple extra sources in the matrix, that would directly feed a voice array number lookup to source value:
ie:
Voice Spread Bipolar:
int[] arraySourceVoiceSpreadBipolar = new int[16] { 0, 50, -20, 30, -100, 10, -30, 60, -50, 30, -40, 20, -20, 100, 0, -40 };
Voice Spread Uniopolar:
int[] arraySourceVoiceSpreadUnipolar = new int[16] { 0, 50, 70, 30, 50, 80, 60, 40, 50, 100, 20, 40, 90, 40, 60, 20 };
(Above normalized and curated with 0-100 values... maybe would want to normalize source values to 0-127 or 0-128)