Wow, ein Select mit 5 subselects, und am ende dann noch order by rand, womit zuerst alle gesammelten daten in einer temp. tabelle abgelegt werden müssen, um am ende dann zufällig 12 rauszusuchen.

Was ist "jos_community_games" denn?

Man müsste wissen, was genau damit bezweckt werden soll.
Wenn es um die Auflistung 12 zufälliger Einträge aus einer Tabelle geht, zu denen man dann noch weitere Zusatzdaten benätigt, ist hier evtl die Aufteilung in mehrere Anfragen sinnvoll, also zuerst aus 1er Tabelle via rand() 12 Einträge holen, dann erst in weiteren Anfragen die zusätzlichen Daten.

Scheinbar wird aber auch jedesmal über ein COUNT() gezählt, wie viele User diesen Eintrag als Favorit haben, das sollte man auch vermeiden und besser einen eigenen Counter dafür führen, der halt jedesmal +-1 gemacht werden muss, wenn ein User was an seinen Favoriten ändert. uvm...

Siehe dazu auch:
http://dev.mysql.com/doc/refman/5.1/de/explain.html

Wenn man dem ganzen ein EXPLAIN voranstellt, sagt einem MySQL, was intern genau gemacht wird, daran sieht man dann schnell, wo kein Index genutzt wird usw.