Thread pools should be used for all short lived threads. There are some places in PrimProc where we create new threads:
BPPSendThread creates a thread during construction. This happens once per query.
loadBlockAsync() creates a thread to load the block.
These threads should be part of thread pool for efficiency's sake. Perhaps they could share the fServerPool with connections, or maybe make another pool.