Para sus datos particulares, podría hacer:
order by (case when cat_type = 'free' then id*1.0
else 2*id - 7.5
end)
Esto parece muy arcano. Si tiene un problema más general, debe hacer otra pregunta, dando una mejor descripción de lo que realmente quiere lograr.