Eu não conheço o code-igniter, mas basicamente você quer que ele faça a união primeiro e depois aplique a ordem por sobre todo o conjunto. Isso exigiria uma subconsulta. Deve resultar na seguinte consulta SQL:
select * from
((SELECT * FROM media m INNER JOIN category c ON m.category_id = c.id )
UNION ALL
(SELECT * FROM media m INNER JOIN category c ON m.category_id = c.id)) T
ORDER BY m.media_files DESC LIMIT 3
Espero que te ajude um pouco.