Look up wavelet shrinkage (basically, denoising using wavelets[1]; when you subtract the denoised from the original, you get sharpening). There are many implementations, derivatives and applications of this. I am sure that many apps inc. RT and dt already use it in some form in several of their modules. I will list a few for now. Please confirm if I am right about these and feel free to add to this list.
dt
G’MIC
- Smooth [Wavelets] (plugin), or
denoise_haar
(CLI).
dcraw
- Wavelet Denoise that @ggbutcher mentioned, which is what your #3 is based on.
[1] The thing to note is that the denoising, thresholding and weighting is done in wavelet space.