Miałem ten sam problem jakiś czasu temu. Może już to jakoś poprawili, ale wtedy uznałem że linki są niedopracowane (tak jak większość dockera...), i zrobiłem wszystko wystawiając usługi na adresie IP hosta w bridgu dockerowym.
Każda usługa ma swój stały port na bridgu, każdy konsument ma ten adres IP i port whardkowoane/przekazane przez env var/przekazane przez configmount. Jak usługa padnie a konsument próbuje się do niej dobić, to tak samo będzie refused jak w przypadku linków. Jednak, jak usługa wstanie znowu, to wstanie na tym samym porcie i wszystko będzie cacy.
Brzydkie, ale co zrobicz.