Eu suspeito que o seu problema é mais porque tudo o que envia os pacotes UDP não é adicionar um caractere de nova linha aos comandos (como no caso eles devem enviar "play\n" e não apenas "play" ).
Em qualquer caso, se você quiser que uma nova conexão TCP seja criada para cada um dos pacotes UDP, use udp-recvfrom em vez de udp-listen in socat :
socat -u udp-recvfrom:3333,fork tcp:localhost:50000
Em seguida, todo pacote UDP deve acionar uma conexão TCP que é ativada apenas para enviar o conteúdo do pacote e, em seguida, encerrada.
Teste fazendo:
echo play | socat -u - udp-sendto:localhost:3333
(que envia um pacote UDP cuja carga contém os 5 bytes "play\n" ).