Most of the time, you can't add "new" features without touching the main code, this would be different with modules, though.
Branches are there for a reason, one would have more control over "his" branch, and he could focus on what he's trying to do, more people working on the same branch is distracting for them and they would need to keep up with each other's changes.
So the issue, as I see it, is just in merging from a branch to another, and from several branches to trunk.