My understanding is that what I'm asking for may simply be impossible? An image this small simply doesn't have enough pixels available to draw a smooth edge for the circle?
This is more or less correct. Basically, no circle (or curved surface) is really smooth when rendered to the screen (or to any other raster-based representation). With larger circles, the effect just isn't as obvious.
Since your image is composed of colored squares (the pixels) there is no way you can represent anything without data loss that isn't a rectangle with its edges aligned to the screens-coordinate axis. So the question is how to build anything else within those constraints.
What you can do is to calculate if the center of the pixel lies inside or outside of the geometrical shape you want to render. If it is inside, give it the correct color, if not, leave it untouched. However, this is a binary process and leaves you with visible "jumps". A diagonal line would look like stairs. To get rid of this effect, you can take any pixel that is only partially inside your shape and calculate the ratio between the area that is inside and outside of the shape. You then use this ratio to mix the color of the shape with the background color and assign this as the new pixel color.
For large circles, this will give you the illusion of an almost perfectly smooth surface since the count of those interpolated pixels is relatively low when compared to the rest of the circles' pixels. But the smaller it gets, the more of those color-mixed pixels you will have in relation to the pixels that have the full color. The extreme case would be that the circle is inside of a single pixel and the less area of the said pixel it covers, the more it will "fade out".
When downscaling you are facing the same problems. You compute the average value of multiple pixels and assign it to a single one. If there is one pixel that isn't fully inside of the shape, the color will get blurred.
So in conclusion, there is not much you can do about the "blurriness". The alternative would be to disable the interpolation but this would give you a staircase pattern, which is also not really what you want.