By nature of the Measure Values field, any field placed on the Measure Values shelf must be a measure, and not a dimension. Additionally, when a string field is converted to a measure, the Count or Count Distinct aggregation is applied to it by default.
One potential workaround would be to create a calculated field that contains the formula 0.0, then place as many copies of the calculated field as there are columns to be shown (19 in your case). Then, after the calculated fields are on the Columns shelf, each measure or dimension to be shown (including string fields) can be placed on the Label shelf of each calculated field.
For a clearer demonstration of this method, please see the attached example workbook.
A couple of things to note with this method are that the string fields will only appear correctly if there is one string value per row of the visualization (otherwise the multiple string values will overlap and be unreadable), and that some editing of the axis titles may be necessary.
For a much more in-depth (although somewhat advanced) demonstration of this method, I recommend reviewing Jonathan Drummey's "Crosstab of Many Colors" workbook on Tableau Public:
Strings in Crosstab Example.twbx 943.6 KB