Setting shipping costs on a per-product basis
Were I doing this, I would create a single (or an entry, or a global I guess) with a table (or maybe Matrix) field that would hold the shipping price chart.

I'd then create a custom shipping plugin in Commerce, that references this data and returns the shipping cost.

This would give a very nice UI for editing the products shipping, and would be a simple plugin to make.

Here's an example function that gets rate from a table:

public function getRatesForZone($zone, $slug){

    $criteria = craft()-&gt;elements-&gt;getCriteria(ElementType::Entry);
    $criteria-&gt;section = 'freightData';
    $criteria-&gt;slug = $slug;

    $ratesTable = $criteria-&gt;first();

    $rates = [];
    foreach ($ratesTable-&gt;postRates as $row){

        if($row['destinationZone']==$zone){
            $rates = $row;
        }

    }

    // If we reach here we couldn't find rates, return nothing
    return $rates;

}


Beyond that you just implement a shipping rule/method - see  https://craftcommerce.com/docs/shipping-methods

In this case, a small amount of custom code  will give both a better result and better UI I think, rather than trying to shoehorn in to the methods Commerce provides (although note I have not really investigated the Commerce methods much of late - I find custom shipping is usually the more controllable way to go!)