input radio ‘checked’ saves, but select option ‘selected’ doesn’t

It was a long way around to get there but you basically have a markup error. You didn’t name your select. You should have:

<select id="select-taxonomy" name="<?php echo $name ?>"> // <-- here is the change
  <?php foreach($terms as $term) {
    $id = $taxonomy.'-'.$term->term_id;
    $value= (is_taxonomy_hierarchical($taxonomy) ? "value="{$term->term_id}"" : "value="{$term->term_slug}"");
      echo "<option id='in-$id' ". selected($current,$term->term_id,false) ." {$value} />$term->name</option>";
    } ?>
</select>

You don’t name the individual options. You name the select itself. With that change, it works just fine.