Para seus dados específicos, você pode fazer:
order by (case when cat_type = 'free' then id*1.0
else 2*id - 7.5
end)
Isso parece muito arcano. Se você tiver um problema mais geral, faça outra pergunta, descrevendo melhor o que você realmente deseja realizar.