Is it possible to limit which products users can purchase by role?
You should create an additional "VIP ONLY" product display - a node type that aggregates products and effectively shows them in the front-end. 

With this new content type you could tap into its permission system using Content Access and limit the "View" permission to the "VIP user role".

When you want to create a VIP product simply create a new "VIP ONLY" node.

Steps:


Create a new node type in admin/structure/types . Call it "VIP ONLY".
Add a product reference field to the node. Use the existing field. It will now be listed in views that list product display types.
Setup the permissions as per above.
Profit.