What about this: do some manual preprocessing first.
If you have many categorical variables, (Can't be that many for a survey.), for each one
- order answers by decreasing frequency,
- then lump them together into the say < 10 major responses, and assign the 10th to "other".
Do so for each categorical variable. Sometimes it will be better to assign, say, only 3 major responses plus "other". Then do one-hot-encoding, (=categorical to numerical using dummy variables) then do simple KMeans clustering and interpret the resulting clusters yourself for plausibility.
If you have only free-text responses in your survey, or lots of NAs, you have to do even more preprocessing first.