I dug into the code and it appears as though while it says the DestinationName is optional, I was getting a null pointer in the code on it.
DestinationName The name of this particular Capability instance (optional)
I added a DestinationName for both of the capabilities, and then tried to register all of the capabilities which was successful.
We had similar kind of setup... We created path forwarding rules for all the sdl micro services. We treated deployer and content service separately.
Synopsis of what we did:
Configured all services on the deployer boxes using lb domain
name... this you can do by replacing server name with lb name in the
cd_storage file of the respective service and ...