Acontece que o código de saída não foi realmente necessário. Como yad imprime a linha selecionada para stdout e nada lá se o processo morreu, tentei fazer isso:
SELPIPE=$(mktemp -u -p "${XDG_RUNTIME_DIR}" "${0##*/}.XXXXXXXXXX")
mkfifo "$SELPIPE"
exec 4<> "$SELPIPE"
yad ... 2>/dev/null 1>&4 &
yad_pid=$!
#wait for notification
( read -u 3 line && kill -USR2 $yad_pid ) 2>/dev/null &
pidof_killer=$!
#wait for yad termination and read its stdout on a timeout. If triggers timeout, it's empty
wait $yad_pid
read -u 4 -t 1 SEL
exec 4>&- #close FD4
kill $pidof_killer 2>/dev/null
#etc
Funciona, exceto que os processos mortos gostam de escrever linhas $ PID Terminadas.