Huge +1. I've never heard of this method being used before, but it's a great idea. Did you come up with this from somewhere else or did you get the idea on your own? This is a huge step forward for obfuscation of addresses.
I independently came up with it, but I'm sure it's been proposed many times before. I know a lot of people have worked on coin selection ideas that make change amounts difficult to distinguish from the sending amounts, but in practice it's very difficult to do that well. On the other hand, having multiple change addresses makes it easy to have them completely ambiguous with the actual withdrawal, at the expense of making the transaction a little bigger and occasionally spend-linking a few extra outputs together.
(The other disadvantage being that transactions with 3 or more outputs are relatively uncommon, so I can't use them too much or it will be characteristic of a MP withdrawal)
It started off when I was playing around with blockseer on MP and some other sites, and it was a bit surreal to see that in what seemed like ~99% of the cases you could build up a pretty accurate picture of the hot wallet, purely by tracking transactions and deducing which was the change and not. I'm pretty sure that with enough effort, it would be quite easy for someone (e.g. coinbase or circle?) to build quite an accurate idea of what is a deposit and withdrawal (but not really link them together).
As another benefit, the code now monitors the size of the hot wallet and actually automatically spills it over into cold storage (using bip32 addresses) which avoids the other potentially privacy damaging sweep operation =)