Client-side anti-cheat doesn't make any sense. The player will always control the client if they really want to (and they have every right to do so).
AI-supported server-side cheat detection should be where it's at. I doubt it'll be much worse than the half-baked "solutions" we currently have.
Running essentially part of a game in ring 0 is completely unacceptable. Vanguard even runs when the game does not. It's just cocky the publishers pretend like their anti-cheat is secure. Someone finding an exploit in the anti-cheat can use it to own systems running it.
The real solution is designing around the problem. Pretend everyone has an aimbot and make aim matter less.
Players want to pull the trigger the moment their crosshairs touch the enemy? The game could just... do that. It's only an instant-win button if, for some reason, bullets are perfectly accurate when you just whipped your mouse around to land on a guy.
These games already add inaccuracy for movement. Why not for mouse movement? If you're holding an angle and someone walks into it, yeah, you should definitely hit them; you correctly predicted what they'd do. If you're smoothly tracking to align with someone, you should have great odds. If you did a 360 no-scope, get real. Why would that be any more accurate than leaping around wildly and hip-firing a submachinegun? A rifle bullet will be more accurate out the barrel, but you've expressed no precise control over where the barrel is pointed.
But if you'd just add everything to the game that a cheat would do, then you'd have no game left. Aimbot, wallhack etc. for everyone? What's left of the game then?
Positioning, prediction, economy, teamwork, movement? Basically - ask any hardcore FPS player what they do besides click on heads. (And then watch them twist in pretzels to insist that clicking on heads is the heart and soul of the game and there'd be nothing left if that was changed in any way.)
Wallhacks can stay forbidden. They're detectable through gameplay. Especially when the server can straight-up lie to players about enemies just around a corner or off in the distance. Dummies can even be sent to the renderer, if they're all masked by cheap occlusion queries. The client does not need to know until a player is nearly onscreen.