It seems like whenever I choose to play TF2 at dead-ish times (when my favorites are all empty) all the servers I join are 90-100% bots. Is there some easy way to avoid joining those servers?
If you right click the header, you can unhide the 'Bots' column. A regular server with bots will then advertise its bot count (unless there are enough humans playing; then it's not an issue right that second):
Be aware that some servers do not advertise their bot count at all, which is what you might be experiencing. If you're playing on Egypt in stage 3, you'll be able to easily tell humans from bots running against the wall; otherwise it can be quite hard to tell those bots apart.
What you can try is logging in at an unusual time where hardly anybody is online, like European morning. Those servers with 23/24 players (or similar) are probably entirely bots; go ahead and blacklist those. They're typically 24/7 servers or idle "trading" servers.
Sometimes I wish servers weren't this moddable.
It happened to me too and this is annoying but there is not much you can do. The only thing I can suggest is to continue improving your favorite list of "nice" servers by attempts. I also blacklist a lot.
Finally, if you like, try to increase your friends' list by picking people that play TF2 a lot so that you can join their game when your current server become empty.
It's easy to recognize servers when it's filled with bots. Just look at the server and the "players" playing in the server and you'll recognize common bot names. Some examples are "The Cake is a Lie", "Screaming Eagles", "Mentlegen" among others. After a while you can tell just by the names that there are bots.