Since you are working with a very large number of "incidents", perhaps there is some other way to solve the problem.
Can you elaborate what you want the overall solution to do?
For example, do you route geometries/directions of the closest facilities?
If not then you could be using the OD solver.
Do the facilities need to be within a certain distance, say 20 miles? That is, can you put a cutoff?
If indeed you can put a small cutoff, then you should turn off hierarchy if that is ON.
And perhaps you have already run Calculate Locations on your 40 million points so that they can load quickly the next time around.
Can you also say why the single thread with one zone did not work perfectly for you?
Jay Sandhu