I did not follow up on your comment here k8snetworkplumbingwg/sriov-cni#37 (comment) but one of the reasons I used veth here was some slowpath processing can happen in the kernel. We used veth to inject on one side from DPDK app. The kernel would receive them on the other end of veth and then craft any replies or update its state.
From what I understand dummy interface is not capable of this. What are you thoughts on providing a veth option?