Using WhatsApp iOS app without granting it access to contacts
Disclaimer: I have only used the Android app, so this may be incorrect for iOS.

I was able to be initially messaged by someone, and thus have them perpetually avaiable in the WhatsApp-internal contact list, all without sharing my device contacts. This was done by getting a "first-class" user who has already forked over their contacts to message me first.

The user who first messages you must allow WhatsApp contact access on their personal device. I know of no way around this, but to be fair, if you're trying to use WhatsApp then you're probably trying to connect with someone who has already done this.

Here is how I managed it:


Install WhatsApp and repeatedly deny any Contacts access.
Have another party who has already forked over their contacts attempt to contact you on WhatsApp.
When they are presented a list of their contacts, they should select "New Contact" or something of the sort.
The other party should enter your phone number into this new contact. They should complete this step even if they already have you as a contact on their phone. This step forcibly exposes the phone number to WhatsApp, while it otherwise would not show that you are a WhatsApp user.
The other party can now message you as normal, add you to groups, etc. You can message back.
(Optional but recommended) Initially, WhatsApp will continually ask you whether the message you have received is spam. There seems to be no way to do this in the mobile app without actually adding the person to your WhatsApp-visible contacts (and thus forking over your contacts). However, WhatsApp for Desktop or Web makes it really easy to simply mark the conversation as "not spam", so for the best experience, sign in to one of those apps to do just that.