An alternate (although mathematically similar) approach would be:
Select a unit of time: let's say five seconds. Call that the Trade Time Slice. Within each Trade Time Slice, all trades are settled equally. If you happen to arrive a nanosecond sooner than the next guy, but you're both within the same 5-s interval (Trade Time Slice), both trades get the same timestamp and price, rather than the strictly FIFO behavior we have now.
Except whether it's one second, 5 seconds, 60 seocnds, or whatever, that doesn't work.
Here's the situation - you put in an order for 100 shares of ABC for $100. 2 seconds later, your friend puts in an order for 100 shares of ABC for $100.. So now there's 2 orders for ABC both for 100 shares at $100.
But, at that point in the timeslice, there were people selling ABC - perhaps 50 shares at $95, and 100 shares at $100, and after that, it's 100 shares at $105.
How do you fulfill the order?
The stock market is a market - people come together and agree on a price.
Someone will buy 50 shares of ABC for $95. Who is it - you or your friend? They're going to save $250. Meanwhile, there's 150 shares for $100 that need fulfilling, but only 100 shares are being sold at $100. Who gets it?
Timeslicing doesn't work - it's just like a store selling this year's hottest Christmas gift. They have 100 units of the item, and 150 people are the door. If you timeslice it, 150 people are going after 100 units. Who gets the toy?
As bad as FIFO is, it's really the only way to determine who gets the shares. Every other way is going to be unfair in some situations, unworkable in others and just bog the market down.
E.g., if you split it 50-50 so you and your friend each get 25 shares at $95, and 50 shares each at $100. But what if your order was one where you will not accept a short order and you must have all 100 units? Who now gets the shares? Because your order could be fulfilled fully otherwise - either 50 shares at $95 and 50 at $100, or all 100 at $100.
That is the real problem with doing it this way because you're going to have an imbalance in supply and demand - either too many people are wanting it, or too little people are wanting it so who gets their sales done?
A better proposal is simply to do jittering. Every order is randomly jittered 0-5 seconds. If you pay 1 cent per share, you will get 0-4 seconds. 10 cents might get you 0-1 second. A dollar and you get it done instantly. Basically if you're trying to arbitrage it, the jitter can kill any potential profits by simply making it so you don't get your shares you bought.