One way you can do this in crystal is:
1. If there are records in the person table with NO records in the reservations table you will need to left join the tables to get all records from Persons.
2. Group on PErson - Preferably a Key like personID so 2 different people are not stuck int he same group.
3. Create a formula to find which persons have the contact mode you want to exclude. (YOu can also do this via a parameter so you can have 1 report for any type) ...
if {reservation.channel}="Email" then 1 else 0
Email is just the sample and can be replaced by any type or a parameter option.
4. Create a Summary Function of the above formula field as a SUM at group level1 (person).
5. Use the Select Expert with the Group Selection option toggled on and exculde any item where step #4's summary is >0 (make sure you also do not lose any NULL values here).