Hide already purchased products (or allow purchasing the product only once)
I would use Content Access to restrict access to nodes by role, then I would make a special role that is required for viewing this product. Then I would create a Rule where buying that product triggers that  role being removed from the user.