Overwatch's large cast is actually what makes the rock-paper-scissor gameplay work, because you'll almost always find somebody you like that counters somebody you hate, and often that new character is somebody you'd never think to try otherwise. For instance Mei ironically is right up there with Bastion in terms of pissing players off (I play with a couple friend-of-friends who consider her "cancer") and there was one game where a combo of her and Winston shut down our attack on Hanamura. The next day I tried out their hard counters and I realized that I love playing Junkrat, who before I had absolutely no interest in playing.
Really you should have at least 1 character in each of the 4 roles that you like (shouldn't be hard since they all play differently) and at least a handful of intentional "counters" alongside them. For instance here's my current roster:
- For support I default to Lucio and Mercy, but switch to Zenyatta when they have low mobility (tanks, turrets, Bastion, snipers) or Symmetra if they have high mobility and I'm on defense (her turrets and left-click do a lot of work with smart use and placement).
- I play Junkrat to counter the aforementioned Mei/Winston combo or on capture maps.
- Mei to wreak havoc on other tanks and non-super-mobile dps.
- Learning to play Reaper to teleport-flank on heavy chokepoint maps like fucking Volskaya. Also D.Va for the same role but a more tanky style.
- Picking up Zarya for wombo-combos and off-support.
That's nine characters and I still want to add a sniper and maybe another tank (I've tried on-and-off to get a handle on Reinhardt). Am I good with all of them? Hell no. Do I love all of them the same as my favorites (Mercy and Lucio)? Hell no.
Don't get me wrong, if I could get away with only playing my favorite 2 and switching to another 1-2 when I get bored of healing I'd be happy as well. But the thing is I actually enjoy playing all nine of these heroes, because each one feels different and gives me a completely different experience of highs and lows. I love wall-riding and knocking people off cliffs as Lucio as much as I love getting a 3+man rez as Mercy or freezing and punching with Mei or what have you. The best part is that it's a lot easier to play all of these characters than it is in, say, League of Legends, because the games are shorter and you can easily switch to something drastically off-meta (like no healer) if what you're doing works just as well, if not better (characters like Sym and 76 help ease the burden of this a little). It all depends on what the enemy throws at you as much as anything.
Also I need to emphasize that this is a team game and that communication wins game. I
still have to remind myself a lot to use voice chat when solo but even typing in chat and using the chat wheel for "group up" and "my ult is at xx%" is huge. I had a game yesterday where a Bastion, Torbjorn, and Widow held a choke point, and afterwards I kept thinking "what could I have done?" We had a Genji but he couldn't advance due to several factors, so maybe if I started communicating on who was bothering him I could've started a strategy where 2-3 of us break Bastion's support and Genji finishes him and the turret off. I didn't though and we lost. I'll just keep that in mind for the next game though.