The attached workflow would be one way to dynamically duplicate columns where needed. Take a look and let me know if you have any questions!
Essentially, use a the transpose tool to create a row for each of your columns. Where there is a need for duplicate columns, you can use the Generate row tool to create the necessary number of columns based on the specified amount from the text input tool. The one part I wasn't sure about was what name you wanted to give the new headers but for now I have just used an Indes (So if column A should have 2 duplicates it is A1 and A2). You can union the newly created rows back to the rows that did not need to be duplicated and use the cross tab tool to undo the transpose.