Use a polite executor for validation tasks
I tested three solutions to this problem:
- Use a separate executor for validation crypto tasks
- Use a separate executor for validation crypto and DB tasks
- Continue to use the existing executors, but add a queue to prevent validation tasks from blocking the crypto executor (this branch)
All the solutions had comparable performance, so I chose the one that didn't involve adding another executor.
This branch also includes a commit that adds logging to the crypto and DB executors and the DB lock to help with performance measurements. Should be useful for #545 (closed).
Closes #675 (closed)