(Post is meant only for nav mesh developers.)
(READ THIS BEFORE CONTINUING IF YOU HAVEN'T ALREADY!)
SNIPER_SPOT and SENTRY_SPOT
The SNIPER_SPOT and SENTRY_SPOT Nav Area attributes set through tf_mark don't do anything in release TF2. As searching through the Jungle Inferno leak (revealed in 2020) of TF2 reveals, those attributes only work in the scrapped raid mode. (Both are referenced for game logic only once in tf_raid_logic.cpp:CRaidLogic::OnRoundStart( void ), the other references to them are merely for filters and their visibility.)
To make a proper sniper spot, you need to make an area of hiding spots. (A hiding spot is a tile that is not connected to any other tile and has at least one free corner,) If the game doesn't recognize some of those tiles as hiding spots, then run nav_analyze and that should do the trick.
There is no way to make a designated sentry spot as far as I know, but I could be wrong seeing as how I'm still unfamiliar with nav meshes.
func_tfbot_hint
By proxy the func_tfbot_hint entity is useless for SENTRY_SPOTs, as it really just marks a nav area with SENTRY_SPOT. However the game does use this entity internally to keep track of good sniper spots for lurking sniper bots, just not through SNIPER_SPOT.
TL;DR
The SNIPER_SPOT and SENTRY_SPOT nav area attributes don't do anything at the moment, so stop using them unless if you're marking stuff.