Virtual Sequence:
When you want to select the sequence from testcase, use virtual sequence.
If you need to coordinate the activity between your two sequences (bus_master_seq & other_seq1), it is sometimes easier to do it using a virtual sequence.
If you don't need to coordinate activity between them, then what you have will work fine and you don't need a virtual sequencer.
If the two sequences are independent, but you need one to run before the other, you can use the phasing mechanism in UVM. For example, if your two sequences are independent, but you need to run the bus_master_seq before other_seq1 starts, you can set them to run in different phases.
E.g.
//running bus_master sequence on sequencer1
uvm_config_db#(uvm_object_wrapper)::set(this,"sqr1.configure_phase","default_sequence",bus_master_seq::type_id::get());
//running other_seq1 on sequencer2
uvm_config_db#(uvm_object_wrapper)::set(this,"sqr2.main_phase","default_sequence",other_seq1::type_id::get());