Use a separate executor for validation tasks
I tested three solutions to this problem:
- Use a separate executor for validation crypto tasks (this branch)
- 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
All the solutions had comparable performance, so I chose the simplest.
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)