Я думаю, что то, что вы делаете сейчас, вероятно, лучший путь. Дублирование данных является нормальным явлением для баз данных типа NoSQL, и ожидается, что вы сделаете несколько обновлений, чтобы все синхронизировалось, если что-то изменится. Это абсолютно нормально.
Альтернатива - как-то хранить все релевантные данные в одной коллекции (не использовать вложенную коллекцию для хранения друзей), но тогда вы столкнетесь с другой проблемой, которая в конечном итоге превыситемкость документа, содержащего все данные для каждого пользователя.
Суть в том, что базы данных NoSQL, такие как Firestore, обеспечивают лучшую масштабируемость и более быстрые запросы в больших масштабах за счет менее гибких запросов и большей работы. поддержание дублированных данных в актуальном состоянии. Если вы предпочитаете более гибкие запросы и более простые обновления, то Firestore может оказаться не лучшей базой данных для вашего приложения.