Wrapping in a SingleRpcCommand happens even without a replication queue: that's what happens with all the regular commands (e.g. PutKeyValueCommand) in non-tx caches. The only way to get a non-CacheRpcCommand executed remotely is to call JGroupsTransport.invokeRemotely directly.

I wouldn't worry about what custom commands might do at the moment, because it wasn't actually possible to return anything without the fix for the first part of ISPN-2814. And for the future we shouldn't support new custom commands returning Response instances.