I agree with you. Twenty dropdown lists on a single page is too much.
To go by your description, I would create distinct product pages, say, productPage001.cfm, productPage002.cfm, productPage003.cfm, and so on. Then I would put 4 dropdown lists per form per page, and use a table -- even, better, use div and CSS -- to display them in a row.
This also immediately suggests you could apply cfform's preservedata attribute to preserve the selected values in the form fields. You could also use session variables or a database to store the selected values.