Type 2 Dimension for a fact measure
Honestly it really just depends on your use cases, but for me I would likely just store all 10 columns in the same table and call it a day (unless they were very unrelated to each other, then I might normalize it a bit). Having the full list of fields might influence different answers, and your approach is a valid one as well. It just might be more work to maintain that way.
Essentially it would be a Transaction table, and log a record for each change on any of the fields. Then it's easiest to look at what the current state of a given product is, or what its state was for a given timeframe.
Yea you'll run into some data duplication, but most modern database systems automatically compress their tables anyway. So unless you think you're going to be creating billions of transactions a day and start creeping into big data territory, I wouldn't be super concerned from a performance perspective.