Here's what I've done from right within WebUI. The method is not original to me.
1. Suppose you have just generated an image in txt2img that is absolutely perfect, except the hands.
2. Send it to inpainting.
3. Make sure all the settings in your inpainting tab are identical to the ones that gave you your txt2img (sampler, cfg, etc.), except for your seed. Set that to -1 (dice button).
4. Color over one hand (not two) completely with the inpainting brush.
5. Set denoising scale to 0.5.*
6. Generate. I usually do this in a batch of 4.
7. Pick the image that looks the best (assuming you are seeing an improvement). If it's good, you're done. Send it to img2img for upscaling if you'd like.
8. If you get a hand that is better, but not great, click the send to inpainting button. The next time you generate, you are making variations from the new image you picked, so you can do this multiple times to get gradual improvements. Go back to step 6 and repeat until you are satisfied.
*When you pick 0.5 denoising in step 5, you are telling webui that you want to use a new inpainted section that is 50% like your original, and 50% something new. Sliding it higher to 0.8 or so will give you something more different, which means it might not even be a hand any more. Lower, likewise, produces a tiny variation on the original.
If you tried inpainting two hands simultaneously, you might get one that's a big improvement, and one that sucks a lot more. Just do one at a time and skip the stress.
Also, it's easy to see how this method could be used for a lot more than just hands. Go wild.