Haha here are my top 5 heroes to play as. I can give you a definitive "who to play as" for each map, but here's a quick list:
1.) Junkrat - if you're good at predicting enemy movements, Junkrat can do massive damage on tanks. Plus, if you nail the mine jump you can escape from situations very easily.
2.) Zenyatta - my favorite healer in the game. Can be a real pain in the ass when it comes to stopping players as Discord gets people hesitant. Plus, his ult is the best ult stopper in the game.
3.) Zarya - if you master her technique, than she is the most OP player in the game. Really easily to shred tanks and opponents once you get the handle of timing her shields. Difficult to master, but an awesome payoff in the end.
4.) Winston - my favorite underrated character yet in the game. He's a very hit-and-run character, but he's honestly the most fun I have playing hero wise. His "double jump" comes in handy escaping situations and can be a real pain when coupled with Zaryas ult.
5.) Tracer (duh) - best character to use on arena maps; the ultimate pain in the ass; you just need to be conscious of her speed boosts but really easy to pick up.
I can write more later, just didn't have too much time (: