Você está tentando tornar as coisas muito complicadas. Se você quiser usar o xinetd, escreva seu aplicativo para executar cada nova instância falando sobre stdin / stdout. Se você quiser usar diretamente sockets, peça ao seu serviço para ouvir em um soquete fixo e lidar com as conexões em si.
Você não tem nenhum argumento convincente para explicar por que você precisa complicar coisas como essa, você parece pensar que é a única solução. Ou você está deixando de fora os principais detalhes, está confuso sobre como funciona a rede ou estamos lidando com um Problema XY .
Você diz que quer usar um "soquete bidirecional" - quando você tem stdin / stdout que'um canal bidirecional. A menos que você planeje usar ioctls complexos, não há realmente nenhuma diferença - "passar um soquete" não é comprar nada para você.
Você diz que o xinetd é "endurecido" - se você estiver em uma rede privada com firewall, é seguro gravar seu próprio daemon para ouvir diretamente em uma porta fixa. Se você está preocupado com segurança ou DOSes, o xinetd não lhe compra muito.
O que há de errado com as abordagens simples?