I have just realized that the following idea can be easily and efficiently implemented.
The TRC obeys two new operations: "commit" and "abort" after which the TRC disappears. A TRC also occasionally disappears under largely unpredictable circumstances.
The net effect of all of this is that a TRC appears to be a RC to which no one else holds a key.
The CRC will produce several of these TRC's and they can be active at once. When a commit operations is done to a TRC, modifications that had been made to that TRC are instantaneously made to the underlying RC. When an abort operation is made, there are no effects on RC.
A commit operation succeeds only when the records read via that TRC are not due to be modified by other active TRC's. If such a situation prevents success, the TRC deletes itself {and perhaps the TRC holder!}.
The CRC will require "victim determination" logic. It might be based on someone's estimate of the probability of commit vs abort of a conflicting transaction.
Deadlock sensing and victim determination
Journalizing to limit data base damage by buggy transaction code.
Testing new transaction code