You could store the free shipping identifier in a new column in the cart, then within the loop for the shipping quote you could add in a check to skip that item if the column has a particular value.
This is definitely a custom approach but I think it would give you the result you are looking for.