create a number field that gets its value from your pricing table at time of creation by setting the Auto-Enter option ... "Looked-up value". The value will not change when you change the price in the Pricing table. Use that field in your calculation.
here is a screen shot showing field option settings.
dsvail gave you some good advice. You can also use permissions to not allow fields in an invoice to change after the invoice date field is populated. I do that quite often.
Loop and Set Field (not copy) would work.
I tend to Set Field from the get-go when I need to lock-down a value that would otherwise be calculated and suffer from "possible changes" such as you have stated.
With Triggers it is much easier to Set Field on a line item as it is changed.
I may use Set Field for total(s) as well and avoid all calculations.
Thanks everyone who replied. I used a combination of these ideas, the set field work perfect.
On to the next problem !