You could do it with one loop, you just need a valid sort order right? Players with one instrument, followed by the next and so on..

Try this and see if it works ok for you.

    <?php
    $args = array( 
    	'post_type' => 'biographies', 
    	'posts_per_page' => -1,
    	'meta_key' => 'instrument',
    	'meta_query' => array(
    		array(
    			'key' => 'player',
    			'value' => 'yes',
    			'compare' => '='
    		),
    		array(
    			'key' => 'instrument',
    			// Add all necessary intruments into the below array
    			'value' => array( 'violin', 'viola', 'cello' ),
    			'compare' => 'IN'
    		)
    	),
    	'orderby' => 'meta_value',
    ); 
    
    $bios = new WP_Query( $args);
    if( $bios->have_posts() ) : 
    ?>
    	
    	<ul class="no-bull hijax">
    	
    	<?php while( $bios->have_posts() ) : $bios->the_post(); ?>
    
    		<li><a id="artist_id_<?php the_ID(); ?>" class="nb" href="<?php the_permalink(); ?>"><?php the_title(); ?></a> : <?php echo get_post_meta( get_the_ID(), 'instrument', true ); ?></li>
    	
       <?php endwhile; ?>
    	
    	</ul>
    	
    <?php 
    // Only need to reset when there's been a call to the the_post()
    wp_reset_query(); 
    endif;
    ?>

Just note, you need to add the applicable instruments into the array on line 14.