Internal: In thread pools, use DirectExecutor instead of deprecated API

Guava deprecated MoreExecutors#sameThreadExecutor in favour of
a more efficient implementation. We should move over to the new impl.