Hi,
Unfortunately, there isn't any feature in NCrunch that can be targeted to a problem like this. It needs to be solved by the tests themselves.
Ideally, you'd probably want each test to automatically terminate any orphaned chromedriver.exe processes at the start of each run. Pulling up the list of processes and terminating them isn't particularly difficult, but determining which processes are being used and which ones are not is quite a bit harder.
The easiest way I can think of for doing this would be to have some kind of file-based registry that can map the process ID of each NCrunch test host to the process ID of each chromedriver.exe instance being used by this test host. When a test spawns up a chromedriver.exe instance, it identifies the process ID of the new process, then writes this to disk along with its own process ID. Every time a test starts its run, it will read the registry, then compare the process IDs of chromedriver.exe and test hosts against the list of running processes on the machine. Any chromedriver.exe instances that do not have a running testhost can then be safely terminated. It feels ugly, but this would be very effective. It would ensure chromedriver.exe instances are always cleaned up, even on client machines and when using other test runners.