This is where a bit of knowledge about how Nostr works can save you some heartache. If a relay is open to ANYONE posting on it without restriction or cost, it absolutely WILL have a lot of spam on it. There is no way around that. There is also absolutely nothing a client dev can do to stop spam on a relay, because client devs have no control over the relays. You were complaining to the wrong person. Complain to whoever is running the relays with the spam.
The ONLY viable answer to spam on Nostr is to use different relays that don't have spam, due to whatever means of mitigation they have implemented. It doesn't have to be paid relays, though those are generally one of the most effective ways of combating it. You could use web-of-trust relays, proof-of-work relays, and others. Also, many of the paid relays are only paid for WRITING to them, not paid for reading from them. So you could add paid relays to read from them, but use public relays only for what you write to.
There are also real costs to running a relay, just like there are real costs to running Twitter or Facebook. The difference is, they make money by feeding you advertisements. Relay operators don't have that option, because most users aren't browsing all notes on a particular relay, such that the relay owner could inject ads into that feed. Instead, Nostr clients are pulling only the notes the user wants to see from those relays. That and we intentionally want to get away from the ad model for Nostr, because it creates bad incentives for developers to harvest personal data in order to better serve ads.
That being the case, how are relay operators supposed to cover their costs for the service they are providing to the protocol? I understand that you would rather not have to pay for those services. So who should? If the relay operator should just have to eat those costs, then we will just end up with less and less people running publicly accessible relays over time.
The issue where logging in on a different machine results in a large amount of your notes being missing and your profile info not loading sounds like your profile and relay list aren't widely available, or are saved on relays you are no longer writing to. Make an update to your relay list on the client where all of your profile info is showing up, then make an update to your profile. See if the issue persists after that.
If your profile info is only saved on relays where the clients aren't being told by your relay list that you now write to, then the clients won't be able to find it. Same thing with your notes. If a large portion of them are only saved on relays that you no longer have listed as write/outbox relays, then clients won't know where to look for them.