For example, if you’d only send enemy data for visible enemies, you’d have pop-in when they come out of the corner
That is technically feasible, and only really needed for a specific genre of game, in which you are already set up to do the sort of ray tracing needed to make that happen.
And how do you determine if they’re visible? Do you take into account shadows, transparent objects, tiny gaps?
The answer to this is again ray tracing for the most part.
Even if you somehow solve that, you’d still have to fight stuff like aimbots
Not really. An ELO tracking method works just fine for a good chunk of that. If a 600 ELO player suddenly starts having stats of a 1400 ELO player overnight, they're almost certainly cheating.
then people with higher latency would be at an even bigger disadvantage and have even worse experience.
How? This is for the server to handle, not the client. And for niche problems where it somehow would have a difference, artificial latency can be applied such as how the game Forts handles it.
Pretty much everything you've listed is from a FPS shooter perspective, which is not the only competitive game out there. These problems are solvable without kernel level anti-cheat that all these companies love to go for.