On second thought, I think the best way to implement this will be to create mutate(key, mutation, cl).
One problem is that this [cluster-level] operation does not translate into a [node-level] RowMutation that can be forwarded to other nodes to be applied. (A slice materialized on a node that is out of sync may not include the same columns as a a fully synced node.)
The Right Way would be to change everything so that when a coordinating node receives a message, it goes down a local path where a RM is created and applied, and then a cluster path where the original message is forwarded to other nodes.
Am I over-complicating this, or is materializing the RM into a list of column ops and sending it Good Enough?