For the data plane, I understand your point that it may be moot if the
control plane were to be supported without modifications, if the data
plane could not be. However, I was thinking that judicious use of Linux
netfilter could be used to insert the data plane shim. In particular,
the IP6 local in and local out hooks seem well positioned in the stack
to support a shim6 shimming module.
My basic concern is that it would be nice to support shim6 without
patching the Linux kernel, for deployment/experimental purposes. It may
be possible to make this work as defined now without a patched kernel.
I think it may require some more complicated matching rules to divert
shim6 control packets to user space while diverting shim6 data packets
to a deshimming module, and making sure there is some way to inject the
control plane packets from user space. I suspect it will be harder to
do the way it is defined, including for non-Linux systems, but perhaps
not impossible.