It's almost impossible to eradicate cheaters in CS:GO and similar games for one important reason: CS:GO servers send you full information about all the gamers who're playing the match with you, which means it's quite trivial to intercept this information and modify certain game engine variables to e.g. make other players visible though the walls (wallhack) or to make your bullets always reach the destination (aimbot). Now even if you don't send all the information, the game still has to show other visible nearby players to you, so dealing with aimbots seems like a lost game.
Well, the root of the problem is in this very paragraph.
As long as a competitive game will calculate stuff on the client side, hacking will happen. As the technology of hacking software grow, sooner or later we'll have to switch server side.
Let me give you an example of an extreme. The game could be computed 100% on the Server side and the client receive the audio + video output over the internet. Then client send the input (keyboard + mouse) to the server. Eventually hacker will figure out a way to analyse the screen to identify other player and control the mouse accordingly but most problematic hack will be neutralized this way.
Of course, computing "everything" server side and sending the video over the internet is a bit extreme (well, until everyone is connected to Google Fiber) but you get the point. To solve hacking, find their input and move them from client side to server side.