If you need a lot of concurrent development, you need to use a distributed version control system, ClearCase or Perforce. ClearCase and Perforce do not use distributed version control, but they handle mergers, probably better than most other tools.
ClearCase merging is done for parallel development and works very well. In fact, most of the developers in ClearCase evolve in their own branch, and then merge their changes into an integration stream when everything they work on is complete. The UCM layer on top of ClearCase simply automates this behavior.
The Perforce pool is more tuned to what they call divergent branching, but it looks like it supports concurrent development.
Subversion is a great version control system. I use it a lot, and you cannot beat the price, but let it run into this, merging in Subversion is still very, very rough around the edges. Using properties to track a merge is very hacky. When you look at the logs, you see a lot of changes simply because Subversion changes the svn: merge property, even if the files are mostly unaffected. In addition, you should know when to use the --reintegrate flag.
Of course, distributed version control systems handle concurrent development with aplomb. This is how they were designed from the very beginning.
My only question is why do you work so much in parallel? Over the years, I have found that getting developers to work together on the same set of changes just works best. When they are forced to work on the same set of code, developers are more careful with their development. They engage in smaller bites, are more careful about changes, and communicate more with each other.
When I worked with developers in ClearCase, and each developer had his own branch, I use to get around and make sure that developers regularly merge in their changes. It is much easier to program when no one but you change the code. Developers simply did all their work in their industry without getting any changes made by other developers. You have 20 developers who do this, and you do not see any changes in the main branch. Then, right before delivery, the developers then mass merged all their changes. Fun followed.
We would spend next week trying to clear everything and get all the developer changes to work together. QA was upset because they had almost no time for testing. It was not uncommon to send an issue unverified. In the end, we had dates to meet.
There are good reasons to have concurrent development, but I have repeatedly found that developers request it because it simplifies the work. They do not need to coordinate their changes, because now it is your job. In the end, why they pay you big bucks.
Well, not a lot of money, but you get paid more than a lot of people. Maybe not the developers, but you are doing more than other people in your company, such as janitors, unless it belongs to the union. Well, you get stock options.