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