There is a way to fight snipers; you get killed by one, see where they are, then go back and punish them. Maybe they move and you'll do it again. If you're a good shot, you can switch to a long range weapon, find an attack position from an angle they won't easily spot, and attack them from there.
Whenever I play breakthrough, the same problems tend to pop up; not enough medics, not enough anti-tank, not enough anti-sniper, etc etc. These are all pretty important to the flow of the game and can ruin them if you're not paying attention. It sucks when no one on your team is reviving, so you either suck it up and play medic yourself, or you just deal with it. Not destroying tanks that are constantly pushing your points and brutalizing reinforcements makes me want to play engineer. Half a dozen snipers camping on a hill braining everyone from 200 meters away and pinning everyone else down, that makes me want to counter snipe. Everything has a counter, generally speaking, the problem is motivating other people to work together in a team-based game and handle it.
In the case of the OP, I typically play sniper because I despise other snipers when I'm doing anything else. You're right, they are extremely annoying and they do it from a position of relative safety and comfort, the jerks. Thankfully, I'm really good at shooters, and I rarely meet anyone who can take me 1 on 1 in a sniper fight, so I have a field day laying out all these losers hiding in the rocks. And well, that also tends to mean I play sniper A LOT, because they are almost always a problem in breakthrough and someone has to do something about them.
In short, help the team, or lose. That's really all you can do. If no one else wants to do it, it's on you. Yes, it sucks, it's not fair, sometimes it's not fun, but that's just the way it is for class based games. Not enough of one class to balance it, do it yourself.