I'm not sure I understand.
John darksends 2 coins from A to C, gets 8 back as change on address X.
He then contributes 2 additional coins from another address in his wallet, address X1?
If that's how it works I'm not sure I get how this helps. It just exposes the holder of address X1 as the person who darksent 2 coins to C.
I am probably misunderstanding where X1 S1 and W1 are coming from.
Thinking about this more, you're right. It may not expose address A, but it does expose X1 - which isn't a huge deal unless A is somehow associated to X1 via IP and assuming X1 is more or less a burn address that will never be reused after it empties out to the change pool.
The only way I can think to get around it would be for the masternodes to hold change from a sender's transactions in some sort of escrow until they add up to a certain amount, then send it back to X1. So the only amount of change anyone ever gets in one send to one specific address is 5DRK (or whatever).
edit: and now I realize I've just invented change denomination, which has been talked about several times already
