You are looking at a few issues here ...
Do you want to "hide" the category for the booze or do you want to "stop" the checkout based on a bottle being in the cart when the shipping address is not NY?
To me, I wouldn't want to hide the products as I want my friend in PA to tell me they saw the booze that we could send to harry over in NY ...
I would warn guests when the product is added to the cart and warn logged in customers if their address is not NY until the shipping is changed that they cannot checkout and block the checkout ...
So, I would want to stop them on the checkout if they don't send to NY ...
This takes a bit of coding, but once done, it is done and I have happy customers who can "see" whatever I sell and try to "buy" whatever I sell but cannot checkout unless their shipping address is correct or not based on is the booze in the cart or not ...
Now, without sitting down and writing the code for this, it would take a lot of guess work to say everything that has to be done ... it is more "time consuming" than hard to do ...
But ... it can be done and should not be a horrible ordeal ...
The code I posted can be used to test the products in the cart for anything to do with the products table ...
That can help you to figure out if 1 or more Products have a master_categories_id == XX where XX is the categories_id for these Products ...