Gossip client selects a pool of relays to used based on your follows.. this pool has an adjustable total size and has a 'coverage' score for your follows. It's unlikely that every user is on a unique relay. It will group the queries onto this set of relays for maximum coverage. You can specify the total following feed pool size and also number of relays per follow.
I understand that web clients have headaches using lots of websockets. This could be part of the issue? nostr:npub1dww6jgxykmkt7tqjqx985tg58dxlm7v83sa743578xa4j7zpe3hql6pdnf was saying that force closing a websocket doesn't work in a browser, is that correct?.. This and having poor cache/local db makes it harder to make a well performing web client but not impossible? My native gossip client rotates through a pool of only 15 sockets for 1000+ follows.
I think also maybe nip65 is missing additional fields that could make the calculations easier such as inbox/outbox/read/write/rank (the settings it has in its UI).