Personal Contact Form granular permissions
I would do this using hook_form_alter.

Set up your roles,  then create a function using hook_form_alter that checks if it's building the contact form or not.   If building the contact form,  check the current user's role,  and either redirect to a 403 or allow it to go through.