Premesso che la struttura che hai complica oltre il necessario il tutto, questa è la prima cosa che mi è venuta in mente. Magari si può risolvere anche con qualcosa di meno contorto.
codice:
select t1.giocatore,t1.squadra from tab as t1
inner join (
select *,@rn:=@rn +1 as riga from (
select squadra
from tab
group by squadra
order by rand()) as t,(select @rn:=0) as r
) as t2
on t1.squadra = t2.squadra
order by t2.riga,t1.giocatore
Se ti è possibile riorganizza il tutto, una tabella con l'elenco squadre, una con l'elenco giocatori e una con le corrispondenze dei rispettivi id.