This is a scenario that isn't really explicitly supported, but intuitively the first thing I would try (and I haven't actually tried this myself) is to set "codec-accept-all" in the offer (or selectively accept just the codecs you may want to use towards Charlie) and then set "codec-strip-opus" in the answer. This should (and again this is off the top of my head) mark the codecs towards Charlie for transcoding, and then leave only non-Opus codecs usable in the answer.
So more or less what you have already. The strip/transcode combination shouldn't be necessary I think, unless you want to influence the order/priority of the codecs, and/or make sure that Opus is actually present in the offer.
Make sure you use a recent version though (11.5 should be good)
as older versions of rtpengine are a bit dumber when it comes to
codec negotiations, and may not support all the options.
Cheers