I thought I’d also demo how it could be achieved with a loop construct, so here is an additional workflow containing both methods:
The Column List Loop Start iterates across the chosen “duration” columns. This loop generates a flow variable “currentColumnName” and this is then used by the nodes that follow.
Inside a Column List Loop, I find it much easier to use the Multi Column version of String Manipulation because then we don’t need to know the column name (which I believe is the issue you were facing)
It is configured as follows:
In the expression you can use $$CURRENTCOLUMN$$ instead of a hard-coded column name, and it will then apply the expression to whatever column is configured.
I’ve also set it to replace the selected input column.
Note that in the “include” panel on top right, you don’t include any columns and you set it to “Enforce inclusion”. This is important as the column we want to apply the expression to will be set by a flow variable:
Likewise on the String to Duration node, no columns are selected and “Enforce inclusion” is selected
Once again, the included column is specified at run time by the flow variable from the loop
And in the Column Filter, I think you will see a now-familiar pattern: 

If we didn’t filter the columns, we would get the duration columns plus all other columns from the table repeated on each iteration.
After that, outside the loop the new duration columns are united by a joiner with their respective rows, and the joiner is configured to exclude the original duration columns.
I hope that helps 
Manipulating duration strings on multiple columns - unpivot or loop.knwf (43.2 KB)