Once the block scanner has run, there's no point in waiting any more. The threads that shutdown() would stop are already stopped.
I have the throttle set to 1ms, which means that only one directory will be scanned per second. The idea is to slow the process down as much as possible. I'm guessing that there are sometimes fewer directories than 2x the number of threads, resulting in the scan completing early. There's no way to slow it down any more than that.
I suppose one additional way to increase the likelihood of having the shutdown() thread run would be to reduce the scheduling delay to 1s or 500ms. Still no guarantee, but it would increase the odds.