I would say that the depth feed you are reading is of the orders coming in, before they are matched.
Those orders would feed into the matching engine which would make fair trades off those orders.
It is not possible to or desirable to make an optimal trade at any given instant. this can be due to network latency (etc) and because someone might think it would be better to make a trade, that was slightly less than optimal, than to miss out on making a trade (but still not too much up or down);
What you will probably find is that if you put in an order to buy 10 btc at $100 but someone else has put in a sell order for 10 at $99 you order will convert to a trade of $99. The buyer and the seller both get what they wanted.
Like wise if one seller was willing to sell 5 btc at $95 and someone else was willing 5 btc at $100 you would end up with 2 partial fills to complete the trade.
Back in the day on stock markets (i.e., not btc) the exchange (or broker) would just pocket the difference. However this doesn't really happen much now (in my understanding) as the markets are more efficient (fast traded data feeds & order placement + high liquidity)
At the end of the day both buyers and sellers get what they want, and because there is reasonable liquidity, speed and fast access to market information, people will not be making trades which are too different from what would be optimal.