Due to unexpected failures of github's LaTeX parsing (which were not evident until I published this, but have persisted afterwards), and since the mathematical parts are important in this, I have migrated this proposal to a blog post with identical content, but correctly formatted equations.
Please continue to put any comments here.
@chris-belcher
Interesting; I had a similar though very vague thought float through my head (some determinism in "decoy" choice) but didn't pursue it. Now I think about it again, I agree the logic for this is quite persuasive, probably the only disadvantage is that it's bringing complexity into a core protocol description (decoy choice) that would be nice to keep outside.
So I'd envisage it like: first filter on the existing utxos that satisfy the given criteria. Then seed the pseudorandom function that comes out of the setup of the protocol (hash(our utxo, service name) is a crude example of the top of my head), which somehow maps to an ordering and we choose the first$M$ from that.
(Of course it will change over time as they get spent, but that's fine. It still has the deterministic quality and we still get a big overlap, presumably).
This brings up a point that I hadn't considered much, which is a 'selection' or a 'filter' on the utxo set could be a computationally intensive thing, even with real-time access like we have on a node.