Refactor cell crypto to pre/post crypto operations
The process of crypting a cell should be split so that parallelism can later be cleanly introduced.
In short, we should separate logic that occurs before the crypto operation(s) and afterward. This should be done so that a "unit of work" becomes crypting a cell (where one or more crypto operations can occur), and logic that happens before/after cryption is cleanly separated.
This is pre-work that is required for #1749 (moved).