Answer to your edit: team names are not private, as their hashes can be found in our merkle tree, which anyone is free to mirror or lookup. So if you name your team `foobar` someone would be able to hash foobar and look it up, and yes, prove it exists. This is a feature, not a bug :-)
But if you picked a team name with very high entropy, then I guess that would be semi-private in that it would be undiscoverable by brute force.
"The very existence of subteams are hidden from all who aren't members of the subteam. Thus, if you wanted to create the team `lets_fire_bob.just_kidding_fire_bruce`, then Bruce would have no way of knowing his number is up."
But if you picked a team name with very high entropy, then I guess that would be semi-private in that it would be undiscoverable by brute force.