An obvious problem of using many nostr clients is that different clients show different profiles of the same user because they are connected to different relays or some relays might just deleted old profiles which are cached by some clients but not by others. I want to embrace of the concept of separate profile per relay in Blowater. Instead of using the newest profile event across all relays, Blowater will use the profile queried from the selected relay. Which means, one user might have a profile in relay A but no in relay B. Not implemented. Could be useful.
But someone can rebroadcast that note for profile from one relay to another
Yes, but most users won't actively do it and most clients don't auto do it.
I thought nip-65 solved this problem
nip-65 solves this only if the client is designed to treat relay as only network replicas and do not differentiate different relays. Meaning, treat relay as secondary citizens. Blowater lift relays to the surface level and differentiate them at the top most level of design. Therefore, nip-65 is not applicable from a design sense.