I know this has been alluded to before, but in addition to the pick/ban rule set to balance weapons, there also has to be a way to balance the player's skill. It would not be fun for anyone if a person who had played for 2 days went up against someone who had been playing for 2 years. It also would be completely one-sided if arguably the most critical member of the team, the medic, was inexperienced, as compared to the rest of their own and the enemy team.
Some have suggested a matchmaking system that emulates the Starcraft team based lobbying style or a mathematically designed system that puts you with people of the same skill. However, I believe that mimicking the Riot system in League of Legends would be much more beneficial to the community, that of "leveling up". It would seem most fair if the total number of kills, damage, assist, etc. were tallied up after each lobby and added to your total number of that respective stat. When matchmaking starts people with similar skill levels would be placed in the same match. Now, this would need to be implemented for each class, as a person with 500 hours as solider should not be placed in the same lobby if he were playing as sniper with he only 4 hours on. For better or for worse, a person with a legit Hale's Own something or other is probably pretty good.
tldr: A League of Legends style matchmaking system should be used.