(Just as a point of reference I played up until the hamster release)
I would say that the core design of characters with cooldown skills and very powerful ultimates that need to be chain to team wipe opposition ARE the crux of why everything is impossible to do right in the Overwatch.
I have played ladder for first few seasons and its essentially, get a 'pick kill' and save ultimates, combo ultimates to push through a chokepoint.
That is very cookie cutter experience that gets old really quickly.
They pushed themselves into making characters that have to have a spike impact in the game (their ultimate) or they are garbage tier character.
Adding new heros that need to follow the same design principles further locks them down into that principle, or they would have to rework +20 characters in one go.
Also the cancel and force movement abilities are extremely frustrating. I remember reading Team Fortress 2 dev blogs and they made a design point of never doing those, and limit the one shot kill experiences (since then I believe there are couple mechanics like that in TF2 and they are unfun).
There is nothing more frustrating that getting hooked and spending next 2 seconds knowing you will die. Taking away player agency is frustrating experience.
As you mentioned the characters are locked into set meta, railroading players into who you pick and how you played given hero. No flexibility, no verity.
I haven't played CS or TF2 in a long time but on odd occasion I would watch a twitch stream of some tournaments. CS is one of the best competitive esport to watch - hands down. Its very easy to understand, rounds are quick and economy makes sure that there is some verity to available weapons and tactics from round to round.
Despite playing overwatch their esport is not fun to watch. Its messy, hard to follow. Again due to ultimates you have game of hide and seek into all ults are out screen is flashing and after dust settles back to hide and seek.
... man I care way too much about this