In the latest version of EShop, there is a feature to assign different customer groups for category/product. If a category/product has assigned customer groups, then only customer in that customer groups can see that category/product.
I think that this feature works as your expect.
Sincerely, Giang