Calculating incremental shipping cost for different products

Hi, I've been reading various options for calculating shipping costs but have yet to figure out how to solve my problem.

I'm in Canada and would prefer to only offer Canada Post which prices by weight and size.

I would like to ship to 3 zones.
Currently I have 3 products:
For zone one, Canada:

1) A book which boxed weighs .812 lbs, is 12 x 9 x 1 Inches priced at \$75.00
To send one within Canada costs 17.50, and each additional book would be an extra 75 cents.

2) A book which can be put in an envelope and weights .264 lbs. priced at \$25.00, with a shipping cost of \$4.60 for one and \$1.50 for each additional.

3)postcards 4 x 6 inch and range in price from \$4.99 to \$9.99 each. Shipping is \$2.75 for up to 10, and \$3.40 for 10 to 20.

I can't figure a way to include all in one method.

Would I need to create a clone of the Zone Rates for each product? If I do this does it calculate for the product or does the customer select the appropriate Zone Rate?
Is there a way to add a shipping cost attribute to each product for shipping calculation?

Thanks