You could create a Shipping profile per categories, then you’d have to update the list of products in those shipping profiles based on their category or tag (which can be done with a little automation).
If you’re looking for an easier way to deal with custom rates, checkout our app: https://apps.shopify.com/toolify-shipping