Here's a half baked idea to maybe help reduce sandwich attacks which can be added on to an existing dex:

1) Auction off the right to place a limit order

2) Every time there's a swap, check the limit order and fill that instead if the rate is better than the pool's rate