Prosody is probably your best bet. It’s modular, easily configurable and is basically fully compliant with the XMPP specification. For your bridges however, I’d reccomend not going fully into XMPP because there are very little bridges available for it. As for dockerization, apparently they are not currently updating their dockerfiles, so this is another thing to take into account.
Welcome – Prosody IM

Prosody is a Jabber/XMPP server written in Lua

It’s distributed through standard package managers, it would be trivial to create a Dockerfile to make your own container.
snikket is prosody’s little sister. docker ready
Unfortunately the whole point of my system is bridges/transports. I don’t even use Matrix itself, I use it as a centralized messenger.
Maybe try Matterbridge
GitHub - 42wim/matterbridge: bridge between mattermost, IRC, gitter, xmpp, slack, discord, telegram, rocketchat, twitch, ssh-chat, zulip, whatsapp, keybase, matrix, microsoft teams, nextcloud, mumble, vk and more with REST API (mattermost not required!)

bridge between mattermost, IRC, gitter, xmpp, slack, discord, telegram, rocketchat, twitch, ssh-chat, zulip, whatsapp, keybase, matrix, microsoft teams, nextcloud, mumble, vk and more with REST API...

GitHub
Doesn’t matter bridge work by “adding a user” to rooms, vs just your user?
I haven't actually used it, so I wouldn't know
Or Slidge
slidge.im — Gateways from XMPP to Other Networks

Slidge is a chat gateway library for XMPP built in Python, and a set of gateways for other networks.

Promising, would need to supplement GV and Signal, but this gets me halfway there, thanks.

The Prosody docker images are basically snikket.org which is developed by one of the Prosody developers.

But Ejabberd also has good Docker containers.

Snikket Chat

Snikket is a simple, secure and private messaging app

Snikket Chat