I understand packets are rotued back to the master by using the transaction ID fields, including the additional bits the interconnect adds in order to be able to trace back to the master that issued the request. What is not clear to me is how the interconnect, or any other part of the system, is able to route requests from the master to the corresponding slave. I suspect this is achieved by relegating each slave to a limited, non-overlapping address range, but I also fear this might cause issues where third party slaves are utilized.
Am I missing something?
It is as you suspect, address decoding to work out which target device is being addressed by the transaction. Each target will have a non-overlapping address range (or ranges).
Even if third party targets are connected to your interconnect, it is the interconnect decode logic that decides which transactions are routed to the target, not the target itself.
So you could connect a target with a 4GB address range, but if the interconnect only maps 4KB of address space to that target, only 4KB will ever be used.