Hi, thanks for sharing this issue.
For NCrunch to be able to maintain a mutable pipeline of tests to execute, it breaks up the list of tests into batches and calls into the test runner many times. You'll be able to see this behaviour if you examine the list of tests inside the Processing Queue Window.
Unfortunately there is no way to disable this. It's required in order for the runner to function. The fresh calls into xunit will result in new test collections being initialised, which in turn will rebuild your database with each batch run.
The only solution to this is to redesign the test suite. A possible solution is to have the test suite detect any pre-existing database that isn't wanted/needed for the test run and tear this down at the beginning of the run, prior to building a new database that can be used for the run. You can put a gate on this code using a static field that will prevent it from running more than once for the same process. Use of a test collection in this situation is optional but probably not required.