In CipherBox, we added some code to handle the addition of the IV in the data packet. This results in us moving around some data to "prepend" the dynamic IV field on an encryption, and "strips" the IV field on decryption.
This would be much better handled by modifying the Input/OutputRecords. Pass down the IV size to the Input/OutputRecord, then let the I/OR offset the data being written/read by the IV size. I think it's a simple adjustment to the count variables.
I may be thinking this is too easy, but it seems very straightforward.