Estimator tweaks improvements (performance)

These were part of https://github.com/spree/spree/pull/5676 but I'm moving them here just so we only focus on the `order.contents.add` action there. I was too naive thinking I could review both add to card and the transition to shipment state in one shot.

Dont intend to do any more work here for the time being. Unless someone finds any issue with the changes or we get a broken build it can be merged soon into master. Reviews are much appreciated.
You can't memoize like this if you are taking an argument.

Consider calling `calculators(package1)` and then `calculators(package2)`. You will get the result of `calculators(package1)` for both of them, which is wrong.