связь many-to-many c доп аттрибутами
то есть отдельная таблица
friends:
id_user, id_friend, activity
activity вычисляете и обновляете на основе ваших метрик колич сообщений например и при выборках сортируете по этому полю. обновлять можно не часто например раз в день.
нагрузка при этом не очень большая, тк вы не делаете ни аггрегирующих запросов ни сложных джойнов.
но учитывайте что дружба это односторонняя. то есть считается что чел подписан на другого (как сделано в вк), если дружба взаимная то будут две записи, второй друг первого и первый друг второго, и activity у них может быть разная.