The way we always handled it is we kept a copy of the test source local on each tester's hard drive for development and then used a source control process (Mercurial, for example) to make sure everyone's source base was up to date. That way, when we ran our tests, they were run on the server copy that was pulled down rather than on what the testers were running against. Running in shared mode was a hassle for us because we'd always be stepping on each other's files.
Yes, merging NameMapping can be a bit of a PITA, but it worked. What we did to mitigate it a bit is that we mapped only portions of the application under test and then used a lot of FindChild calls to find the controls rather than having to map EVERYTHING.