Consensus Probing
The biggest change here is that the consensus package no longer tracks the children of processed blocks. It was only necessary to delete them, and that's a form of pruning that can't even be used for most attacks.
Removing them gives moderate speed boosts to acceptBlock
(proportional to the size of the block), and removes a fair amount of complex code from the codebase, as well as removing some code from the test suite.
I also fixed an issue in TryTransactionSet, but I don't think that solves the problem where the database occasionally goes inconsistent. I'm guessing the database is at risk of going inconsistent when there are a lot of blocks and reorging. Shouldn't be as much of a problem on the live network where the block times are more sane. On dev net, my guess is some blocks with file contracts were taking 2-3x as long to verify as they took to mine, which was causing the problems.
There's also some code here which continues to move the consensus set in the direction of being a single database transaction. It's got a fairly long way to go before reaching that, but every step helps.