Thanks for the explanation of how collateral works! Since you're wrapping it up, here's some trivial stuff:
I noticed in processmessage() for "dsa", there's a version check:
pfrom->nVersion != darkSendPool.MIN_PEER_PROTO_VERSION
with a constant that is a bit confusingly named, maybe it should...