chg: scanner: Move to concurrent.futures
away from multiprocessing, because it looks like we hit python bug 22393, in which the pool hangs forever when a worker process dies. We don't know the reason why a worker process might due, maybe oom. See https://stackoverflow.com/questions/65115092/occasional-deadlock-in-multiprocessing-pool,
We also run into several other issues in the past with multiprocessing. Concurrent.futures has a simpler API and is more modern.
Closes #40092 (closed).