This video compares Valves own fog-of-war implementation to the implementation used by FACEIT, a third party competitive matchmaking service, which shows there's a pretty wide range of trade-offs to be made. Valve went for conservative and fast, while FACEIT went for aggressive and (presumably) slow:
https://www.youtube.com/watch?v=8w1ICIBO3D4
Valves implementation is better than nothing, it at least stops cheaters from knowing which direction the other team is going at the start of a round, but beyond that it doesn't stop them from knowing exactly where most enemies are standing around corners because the serverside visibility checks are so coarse.
This has been replaced by 'subtick' which I don't know enough about to comment.
Many custom servers in games like CS enable a more aggressive version, in cases where you geographically will be close, so you can rule out high latency connections and have more aggressive fog of war.
The engine has a flag that is mainly used to draw the player's weapon (which is rendered above the rest). Using this flag for players was the "engine compliant" way of making a wall hack.
Or in team fortress, replace the sniper's red aimpoint dot with a big model. They become easier to avoid.
Of course not great from large distance / players behind multiple walls but I think the server wouldn't send you the info of those guys anyway.