Se um aplicativo transmitir pacotes UDP, ele deve estar preparado para que alguns (ou até mesmo muitos) desses pacotes sejam descartados.
Portanto, o aplicativo deve lidar com isso (por exemplo, dados de áudio ou vídeo em tempo real, em que as informações ausentes são ignoradas e causam qualidade reduzida, porque você não pode reenviar pacotes) ou deve implementar seu próprio protocolo para garantir a retransmissão ou usar outro protocolo que garanta a entrega.
A implementação de uma camada externa "apenas enviar 2 cópias" não é a solução. Sim, eu sei que você não quer ouvir isso, mas é verdade.
Portanto, reescreva o aplicativo para usar o protocolo adequado.
Alternativamente, encapsule os pacotes em algum outro aplicativo que implemente um protocolo adequado (interface tun / tap). Se você insiste em "apenas duplicar pacotes" para ser um protocolo adequado (não é difícil escrever tal aplicação, google para tun / tap exemplo de programas), tente, e veja se funciona (não vai).