I have had good success with recruiters and agencies. However, most of your observations are also very much correct. Agency timing is usually very far off. I rarely get an email from an agency when I'm actually looking (because, by percentage of time, I am rarely ever looking). The jobs they send me in these cold emails are often not what I am looking for (because recruiters often just don't have my latest information so they don't know what I'd like to see). But when I want a new job or contract and I give agencies the right information, they often help me very well.
This became such a big problem for me that I actually wrote a little app for myself. When I get an unsolicited email, linked in message, or even a text, from an agency or recruiter I forward it to the app and the app responds for me to the sender that I am currently not looking but will keep them in mind for the future. When I am looking I now have a mailing list of all recruiters that have ever contacted me. I create an email with a template that has my current information and work interests and send it back to all of them. I then see who sends me the best jobs.
I've thought about turning the app into a product and putting it out there for people to use. Maybe I will.