What I'm trying to do is substitute every hot pixel with an average of its surrounding pixels. How do you think this (untested) method would compare to using the CloneStamp tool?
This could indeed work. Any automated solution, once it has been proved to be robust, is preferable to manual CloneStamp work. I encourage you to test this method and implement it as a script.
To average nine neighbor pixels, the obvious choice is:
1 1 1
1 1 1
1 1 1
but the kernel you are proposing:
1 1 1
1 0 1
1 1 1
also works, and is more oriented to the problem that you're trying to solve. I look forward to see that script
Or, alternatively, in an oversampled image like that, why not just remove the first wavelet layer?
Despite this may work for some images, it isn't advisable as a general procedure. The problem is that by removing the first wavelet layer, we could also throw away high-frequency components that support sharp edges, even in oversampled images. This is especially true for oversampled images acquired under excellent seeing conditions.