Вся проблема у вас из-за того, что вы тут делаете много http-запросов к API. Это в любом случае будет не быстро.
Вам нужно изучить API на предмет bulk-запросов, когда вы извлекаете сразу много записей одним http-запросом к API.
На сколько я понимаю, друзей может быть очень много, а вы идёте в глубину на два яруса, что имеет квадратичную сложность. То есть если у всех в среднем 10 друзей, то вы сделаете по десять запросов на каждого из десяти дррузей, что очень долго - 100 запросов!
Для начала вы можете кэшировать полученные от API данные, чтобы повторно не получать одни и те же, если есть общие друзья. Нужно найти bulk-методы в API и правильно их использовать (если они есть).
Ещё можно построить работу с такими операциями на асинхронных механизмах, воркерах и тасках. Долгие запросы с кэшированием должны делать специальные воркеры - отдельные процессы, которым скидываются задания через очередь. По факту выполнения ими возвращаются результаты, или кладутся в локальную БД. Это позволит не блокировать основной поток выполнения программы на такие долгие операции.