I don't understand why multiplayer games don't run more on the server. If the server runs the game, then sends to client only what it needs to display the game and play sounds, the client doesn't have more information than necessary and a whole class of cheats is eliminated. There is no need for a client to know where an enemy player is if the player won't be shown on screen (wall hacks).
I think World of Tanks runs this way, and I've never encountered much cheating on there.