Since the early versions of ZoneMinder, it has always been possible to have multiple servers for a single surveillance system. One could achieve different results by sharing or replicating databases, sharing storage through nfs, glusterfs, etc, or just running two entirely independent servers. This can be achieved today, without making any changes to the ZoneMinder source code. Doing it this way is firewall friendly as long as you've got the proper port forwarding setup correclty on your firewall. The one common drawback from doing it this way is that you are duplicating resources across all your servers. There is a set of zm* processes running, for each camera, on each server. On a large system, this is a show stopper because it doesn't scale. On a small system, maybe you don't even notice.
Multiserver was written specifically to address that one issue. Because only one set of processes is running for each camera, between all the servers in the system, it is the only solution that is indefinitely scalable. That is what makes it different from the other mode. This is also why the URL's have to point to the other servers, because one can only stream from the server with the running process.
In time, I expect us to develop something native to ZoneMinder that essentially proxies, automatically, all the cameras through the server you are viewing from, but don't expect that to happen anytime soon. We are doing this, for free, in our spare time, mind you.
We can't use the change you suggested, because that change expects all the zm* processes, for all cameras, to be running on the server you are browsing from. That currently isn't the case if multiserver is configured correctly. We can look into your system if you want to try and figure out why that does not appear to be the case.
You can fix this part of the issue by giving your server the same name as your dyndns name. Rename SERVER-LNX to "zm", set your local dns domain to "myhome.com", and add a DNS A record to your local dns which points to your local ip address so your local browsing doesn't break. That's how one normally does this kind of thing. Of course, it doesn't fix access to SERVER-RPI.Now, if I log in from outside it behaves differntly. Let's say I have external host name zm.myhome.com and I use port 780 as my forwarding port to SERVER-LNX port 80. I type in http://zm.myhome.com:780/zm in the browser and get to dashboard. I can view any event recorded but not livestream. Inspecting (right click Inspect in Chrome) object gives me URL that gave in my first post of this thread.
<img id="liveStream" src="http://SERVER-LNX/zm/cgi-bin/nph-zms?mo ... &monitor=2" alt="CAM01" width="1280" height="720">