Remove giblets from chickens. Place hearts, necks, and gizzards in roasting pan. Discard livers.
With a sharp knife, remove excess fat from chickens. Dry insides with a paper towel. With fingers, loosen skin over breast and thighs to make pockets, being careful not to tear the skin.
In a food processor or blender, combine onion, garlic, paprika, salt, and pepper; puree until smooth.
Spread 1/4 cup onion puree in the bottom of the roasting pan.
Place chickens in pan, at least 1 inch apart. Rub 1 tablespoon puree in each cavity and spread remaining puree under skin.
Tuck wing tips under back and tie legs together with kitchen twine.
Roast chickens for 20 minutes. Drizzle with 1/4 cup chicken broth and roast for 40 minutes more, basting with pan drippings every 20 minutes.
Tent chickens with foil and continue roasting for 30 minutes, or until meat thermometer measures 180° and the cavity juices run clear.
Transfer chickens to a platter and cover with foil to keep warm. Pour pan juices into a bowl and chill in freezer 10 minutes to bring fat to the surface.
Meanwhile, add remaining chicken broth and vodka to roasting pan and bring to boil over medium heat, scraping up any brown bits adhering to pan. Add any juices accumulated on the platter. Skim off fat from chilled pan juices, add to roasting pan, and return to a boil.
Strain juices through a fine sieve into a medium saucepan. Bring to a simmer over medium heat. In a small bowl, blend water and cornstarch; whisk into simmering gravy. Cook, stirring, until slightly thickened, about 1 minute. Whisk in dill and sour cream, if using. Season with salt and pepper.
Carve chickens, discarding skin. Serve with gravy (save some if making Polish Chicken Noodle Soup.)