Quite simply there's two parts to fix. If you are gonna stop tipping then waiters/waitresses need to get paid a fair wage. Also, it's kind of like a performance based thing. For instance, you have two people waiting tables. One does an amazing job and one is slacking and being rude to the customers. It is pretty much impossible for a manager to focus their attention on the waitstaff when running a restaurant. So, tipping is a good incentive for the waitstaff not to be pleasant and timely with the customers.
p.s. Trust me, the deserving get the bigger tips and the non-deserving don't. It's your choice.