Currently the sender is copied into each of the split sender so that the split senders can respond to sender queries by forwarding them to the (copy of the) original sender. However, this precludes split() being used with move-only/single-shot senders, which is one of its most important use cases.
One possibility is to move sender queries into an environment, as with receivers. Then we can copy the environment into the shared state and throw away the sender.
See also #641