"Keep Hard Edges" in something that you want to smooth will yield atrocious results, it simply doesnt do what you might think it will, and besides what is the point of smoothing a mesh if you keep the hard edges?
You didn't say if the part you want to keep from going dull is hard surface (armor, gear ) or clothing with wrinkles. Is it for a game model or high poly character?
Anyway if it is not a game model , fix and tighten your edge loops, either by "insert edge loop tool" or bevel. Bevel will take some practice to figure out what combination of edges need to be beveled to get all quads (sometimes on hard surfaces you have to bevel more edges along with the ones you want to get all quads ). In soft surfaces like cloth and skin you need to use the split poly to fix some n-gons the bevel might create, but it is pretty decent to define new edge loops. The result will be a mesh that when you apply 2 divisions - or turn into sub-d - will be smooth but also naturally crisp and not razor sharp or dull and blobby. If you find the insert edge loop tool splitting your model in a weird way (going too far down the model, not going along the whole edge you want to split- whatever ), it's possible that you need to re-evaluate the way you laid out your edge loops, and fix your topology.