I am so sick of being spammed by calls and emails every time I register a new domain name. I know I can pay for Whois protection with my domain name registrar, or choose a registrar who provides this as a benefit, but is there a way to protect my details for free without breaking ICANN Whois rules?
Just wait until May 25 and then use a registrar in the EU. The new GDPR rules will prohibit making personal information publicly available with whois. See here, for example.
There are domain registry services that allow for free private whois information. One of the registrars that I use doesn't charge me anything extra for private whois. One of the other registrars that I use charges me an arm and a leg for private whois.
I think it's largely dependent on which registrar you go with, as their pricing breakdown is most often how they base their profit model.