Restricting shipping methods/rates based on Magento 2 SKU

Restricting shipping methods/rates based on Magento 2 SKU

Hi, hoping someone in the community here can help me or let me know if this isnt actually possible

I've tried lots of ways to achieve this before coming here, so I'm either missing something it cant be done

Basically, we have a few items on our store that do not require physically shipping (they are licence codes) - however as we need to generate the code and send by email and track this in our CRM system we cant make these virtual products.

What I want to happen is that:
  1.  if the licence is the only SKU in the cart, then only the Email method is given for shipping
  2. if the licence is in the cart with other products, then all applicable shipping methods/table rates are shown

I've managed to create Shipping Rules, and Shipping Restrictions for several other scenarios, typically restricting methods based on Postal Code, but I can't work this one out

I have created a Shipping Type and assigned this to the product and tried making a table rate but this then doesnt display correctly if their is another item in the cart that is physical as the miniscule rule applies, I've made a Shipping method and a Restriction but this has the effect of either restricting all my other methods even when they should be visible, or gives the correct method but leaves incompatible methods visible as well

my ideal scenario would be a restriction that was something like - If SKU with Shipping Type X is the only SKU in cart then restrict methods A.B.C - or something like that

I've also tried setting the Shipping Type to Ship Free in the table rates but that doesn't have the right result either once other products are in the cart at the same time. 

I would prefer not to enable the "Free Shipping" method in Magento, as this then clutters up my cart options on checkout - but if this would work and I can somehow restrict all other methods if Free Shipping applies to the cart then I am happy to take some advice on this

thanks in advance