Just to answer your question, i'm pretty sure this can't be done out of the box of MSTest and NUnit (this approach won't stick in this scenario).
But, IMHO, just don't go there... From my experience, simulating ~1000 users out of a single machine will produce bad results, because the test will encounter all sorts of client limits - thread pool issues, outgoing and incoming traffic issues, etc. I'm not saying this can't be overcome, but it's twisted enough to consider a different approach.
I actually don't recommend using load test tools (there are many of them out there) in this case, as it is simple enough to write a little tool of your own and skip the configuration problems and learning curves of a 3rd party.
What I do recommend, is writing a tool of your own, and running it from seperate machines. It doesn't have to be run by a testing framework (I can't get myself to call it a unit test, because it's not), a console app will do the trick. Here's some code to get you started:
private ConcurrentBag<string> logs = new ConcurrentBag<string>();
public void GetLoad(int numberOfUsers, List<string> myParams)
{
var users = new string[numberOfUsers];
for (int i = 0; i < numberOfUsers; i++)
{
users[i] = string.Format("LoadTest{0}", i + 1);
}
var userThreads = new List<Thread>();
for (int i = 0; i < numberOfUsers; i++)
{
int index = i;
userThreads.Add(new Thread(()=> CallWebService(users[index], myParams[index])));
}
Parallel.ForEach(userThreads, thread=>thread.Start());
foreach (var userThread in userThreads)
{
userThread.Join();
}
var outputFilename = string.Format("LoadTest.{0}Users.txt", numberOfUsers);
File.AppendAllLines(outputFilename, logs);
}