I suggest you ask this question in the **broken link removed**.
We don't recommend the OVM XBus example as it is based a predecessor methodology to the OVM as well as not being directly convertible to the UVM. For example, default sequences have been removed from the UVM. The OVM examples on the Verification Academy are readily adaptable to the UVM.
To answer your questions, the only difference between a master and slave agent is the ordering of responses and requests between the sequencer and driver. A master initiates requests and waits for responses. A slave waits for a response and then generates a request. The number of masters and slaves in any testbench environment is specific to the device under test, and not necessarily related to the roll of DUT interface the agent is connected to. For example, you may have a USB slave controller connected as a slave to your processor bus, but the testbench may connect to the serial interface of the controller as a master.