use EntityQuery to find friends for listing.
use paginate filter, instead of paginate itself, for Entity/Query.
add a filter ForUpdate to all models.
still need to start a transaction.