Estou postando uma solução minha, encontrada com a ajuda de desenvolvedores do PulseAudio, para que outros possam evitar minhas dificuldades.
O problema acabou sendo um bug no módulo zeroconf do PulseAudio 10.0 e provavelmente será consertado mais cedo ou mais tarde. Até lá, a única solução (além de criar um túnel manualmente) é gravar diretamente do servidor remoto do PulseAudio, ignorando o módulo do túnel. Isso provavelmente não funcionará com aplicativos GUI, no entanto. Exemplo de comando para gravar uma fonte de monitor remoto:
PULSE_SERVER=REMOTE_HOST parecord --device=MONITOR_SOURCE > recording.wav
Substitua REMOTE_HOST e MONITOR_SOURCE pelos valores apropriados, usando o nome local da fonte (ou seja, no meu caso alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor).
Uma conexão direta semelhante do PulseAudio pode ser usada com o GStreamer, que possui ferramentas e ligações CLI convenientes para várias linguagens de programação. Exemplo de comando para reproduzir uma fonte de monitor remoto localmente:
gst-launch-1.0 pulsesrc server=REMOTE_HOST device=MONITOR_SOURCE ! pulsesink
O GStreamer também pode fornecer dados de espectro, que podem ser úteis em projetos de visualização. Exemplo com um intervalo longo e sem taxa de transferência de áudio:
gst-launch-1.0 -m pulsesrc server=REMOTE_HOST device=MONITOR_SOURCE\
! spectrum interval=400000000 bands=10 threshold=-100 ! fakesink