I actually proposed a system similar to this in another topic that uses a certain amount of randomness that is directly proportional to the transaction volume of a given item and helps curb the cancel scanning and keeps things moderately fair.
It’s only theoretical, and I have no data or simulations to back up that it would be efficient, but I think with tweaking, something similar could very well work.