Order grouped results by dropdown order
You could wrap this in another for loop and put a condition on the inner fors, 

something like

{% for option in myPositionDropdown %}
  &lt;h2&gt;{{ option.value }}&lt;/h2&gt;

  {% for position, playersInPosition in playersGrouped if position == option.value %}    
    &lt;ul&gt;

    {% for player in playersInPosition %}
      {% set playerData = craft.entries.section('myPlayersChannel').relatedTo(player).first() %}
      &lt;li&gt;
        {{ playerData.fullName }}
        {{ playerData.age }}
        ...
      &lt;/li&gt;
    {% endfor %}

    &lt;/ul&gt;
  {% endfor %}

{% endfor %}


(untested code)

That sort of idea though, loop the dropdown in order and show the grouped results. Heck, you probably don't need to group them at all since you're filtering them out in each loop.

HTH