Not directly related to the image problem but: If you insert a human element into the CAPTCHA then it is essentially broken as you must send the data to the computer and the human is capable of breaking it. This has implications you mention since fingerprinting works regardless if it's the same file size or not. Even random data is quite easily fingerprinted. That is why so many programs rely on generating new random data each time, and it is often their generation code is reverse engineered to break it.
The only way to really prevent fingerprinting is to use a continuous stream of new data such as what is done by reCAPTCHA, the company who digitises old prints, and who only ever show the same picture to a couple of clients before replacing it.
Even without the human element, and continuous random generation I don't think it would work. Even KittenAuth which displayed pictures of cats and other animals and asks you to click the cat was broken, and broken by definition means only a small percentage hit rate since all attacks are essentially automated, so even a 1% success rate and the spammer essentially has control again.
As for producing identical file sizes you effectively can not do this with JPEG. You'd need to look at a small TIFF or something else which has 100% control over the file size. As soon as you apply compression the image file changes depending on the complexity and details within the image. An algorithm to work around that would be either arcane or rather processor intensive.
DPI again couldn't be what you are after since this is something which ONLY ever relates to printing of the picture. If anything it's file size and resolution that you're after. And as per above if you don't use compression you're guaranteed the same file size for each image which has the same resolution. AND to do that you could record an action in photoshop of you opening the image, resizing the image, and saving it as an uncompressed TIFF or BMP.