Bring a pot of water large enough to hold the entire head of cabbage to a boil and salt it well. Remove the core from the cabbage and submerge in the water. As the leaves soften separate them. Blanch a few at a time in the salted boiling water until pliable, one to two minutes per batch. When cool enough to handle, use a knife to remove the ribs. Chop one cup of cabbage and reserve it for later.
Cook onions and garlic in two tablespoons butter and a large pinch of salt over medium heat, stirring occasionally, until softened, about 10 minutes.
Combine beef, rice, eggs, and half the sauteed onion mixture. Season with one tablespoon of salt and some fresh pepper.
Add a little handful of the mixture to each cabbage leaf and carefully roll it like a little burrito, folding up the sides to create a little package.
To make the sauce, combine the remaining onion mixture, crushed tomatoes, water, raisins, sugar, ketchup, lemon juice, orange juice, chopped cabbage, sauerkraut, vinegar, and cinnamon. Season with salt and pepper.
Put a thin layer of the sauce at the bottom of a 9×13-inch pan. Tightly pack the cabbage rolls in the pan, and then add the remaining sauce. You want them to be swimming.
Sprinkle with one tablespoon of sugar.
Place a rimmed baking sheet lined with foil on the lower rack to catch any drips. Bake cabbage on the centre rack at 350F (177C) until the meat is falling apart and the rice is cooked, two to two-and-a-half hours. Tent with foil if getting too dark.