Обычно лучше пойти с объектными отношениями. Таким образом, вы не заставляете другие классы, использующие список PersonFriends, знать обо всем, что происходит в хранилище, что дает вам более четкое разделение логики домена и кода доступа к данным.
Если вы не хотите, чтобы полная коллекция друзей загружалась в память, вам, вероятно, лучше вообще не указывать классу PersonFriends список класса Person и просто реализовывать метод GetFriendsFor (Person person) в хранилище.
Другим решением будет использование ORM, который поддерживает отложенную загрузку, чтобы дать вам возможность загружать список друзей по требованию.