Thanks. I also forgot to mention that I have a Home Assistant instance running on a different machine that isn't reliant on NPM, and it works fine, and has the same issue when I try to migrate it to NPM, so I'm sure the issue is there. I'll try your suggestions.
You can get access to most of them by setting them all to use the bridge network (network_mode: bridge). Then if you inspect the bridge network, you can see the bridge network ip's of them all and use that for Heimdall. The Pi-Hole is an exception though since it requires a different network.
I use yt-dlp... https://github.com/yt-dlp/yt-dlp I recently saw Pinchflat, which may be worth trying out as a front-end for yt-dlp... https://github.com/kieraneglin/pinchflat