You may have to do something like
SELECT source, user, total, friends, user_rank
FROM (
SELECT source, user, count( tweet_id ) as total, max( friends ) as friends,
RANK() OVER (PARTITION BY source ORDER BY total DESC, friends DESC ) as user_rank
FROM tweets
GROUP BY source, user
)
HAVING user_rank <= 10