SELECT DISTINCT ON (uid) uid, female, given, photo, place FROM words_social WHERE uid IN (SELECT player1 FROM games) OR uid IN (SELECT player2 FROM games) ORDER BY uid, stamp DESC
where first column player1 is fetched in a subquery and then column player2 is fetched from the same table?
You could use
WHERE EXISTS (SELECT FROM games WHERE player1=uid OR player2=uid)
although as Tom says, it's dubious whether that will result in a significant speedup.