Your last point is not an issue because price-time priority ensures that customer order is filled always prior to the broker order at the same price, given the broker did not front-run the client.
Your argument is only valid for market orders. It is perfectly legal for a broker to front run your limit orders as follows. Say my system believes Ethanol is going to go down over the next few weeks and I want to accumulate a large short position. Since Ethanol (futures) are not very liquid I use a limit order at the midpoint of the current Bid/Ask of 167 Bid 171 Ask. So I place a Sell order at 169 limit. If my broker (as market maker) wants he can place a limit order to sell at 168 or even at 167 before my order is filled, all without breaking any laws. In the latter case the new market is likely to be 165 Bid 167 Ask and I will have to move my sell order to 166 limit and may still not get filled over the next few hours.
The only thing the broker is prevented from doing is having a limit order at 169 (the same price as the customer) ahead of the customer : If the broker placed such the limit order before the customer, he has to "yield" to the customer at the same price (by forwarding the first fill that is assigned by the exchange to the broker on to the customer's account until the customer's complete order is filled, before assigning fills to the broker's own account).