ops, forgot.
Not sure if possible but best would be if each thread has an own connection to the TOR network.
That helps to widen the bottle neck along the connection to the network
I would use threads to create DNS response chunks, filter these and save the positives in chunk files.
These can then be crawled by other threads separately.