it seems like I'm still having a problem with the IsCompatibleWithSession check. When doing IsCollateralValid, most of the time txCollateral.vout.size is less than 1 so I get "not compatible with existing transactions!" a lot.
<edit>
it looks like in CreateCollateralTransaction, the fee is set to DARKSEND_COLLATERAL, when it looks like it should be DARKSEND_FEE, since SelectCoinsCollateral can select a tx that's only DARKSEND_COLLATERAL*1 + DARKSEND_FEE, which seems to be less than what ends up needing to be DARKSEND_COLLATERAL + DARKSEND_COLLATERAL in the test later on in createcollateraltransaction to make the vout. I'm just guessing though.