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.
ah forgot about other detail here, think `shipping_methods` here is an array not an ar relation, maybe we should look at it on the Package / Packer classes, thanks for all the thorough high quality all things review @gmacdougall you're killing me :)