Hi,
AUDeferredRenderer is the same kind of AudioUnit as AUConverter. You would feed data to it in the exact same way, with a callback (like renderModuleCallback in your gist).
AUDeferredRenderer's job is to call your callback in an auxiliary thread. From here, you are free to call libxmp directly without the need of using TCPCircularBuffer (In fact, there is some kind of a TCPCircularBuffer inside AUDeferredRenderer).
You probably need to have an intermediate buffer because the number of frames returned by xmp_get_frame_info might not be the same as what is requested to your callback. Or you may also have a look to kAudioUnitProperty_DeferredRendererPullSize, and set it to the number of frames returned by xmp_get_frame_info (provided it is a constant you can access when you configure the AUGraph)
If libxmp renders faster than the AUGraph, you should not have any issue (provided that you set kAudioUnitProperty_DeferredRendererExtraLatency to a value big enough. This property corresponds more or less to the size of the internal TCPCircularBuffer)
Hope that helps.
Fred