Since different protocols can and do have overlapping address spaces, the
address alone isn't sufficient to identify a thing. Passing both address
and protocol in every function and signal would make the interface too
complicated.
At the moment only locomotives can have a protocol specified, but there's
no technical reason why other types of things couldn't have different
protocols as well.