Change the source code. This is a non-trivial bit of work that goes well beyond the limits of free consultancy.
I am pretty confident that the structure of Asterisk doesn’t reflect any interaction between B and C and that there are no CDRs that directly reflect such interaction. You will need to correlate the two CDRs. You may be able to detect channel variables on the forwarded call, and add information to the userfiled, or to a field in a custom CDR, to help you correlate.
You may need to enable “unasnwered” call CDRs to maximise the information input to your correlation process.
It is possible that the changes to CDRs currently being considered will make correlation easier, but I still doubt that they will generate a CDR that directly reflects the interaction between B and C…
If you are prepared to consider the long term, joining in the discussion about the Asterisk issue I mentioned (possibly on the design mailing list, rather than the bug tracker, might be advisable.