Heat half the butter with half the oil in a large saucepan, add half the onions and cook for 5 minutes on medium heat, or until the onions are soft and starting to brown. Stir in the diced tomatoes and wine and bring to the boil. Reduce the heat, partly cover the saucepan and simmer for 1 hour.
Meanwhile, pull eight large leaves from the cabbage and cook them in a large saucepan of boiling, salted water for 1 minute. Pour into a colander and rinse under cold running water. Dry well with paper towels and set aside.
Preheat the oven to 180°C. Heat the remaining butter and oil in a saucepan, add the remaining onion and the crushed garlic and cook gently for 5 minutes, or until soft but not coloured. Add the celery and mushrooms and cook, stirring, for 5 minutes, or until soft. Stir in the almonds or pine nuts and the herbs, followed by the rice, Worcestershire sauce and three-quarters of the cheese. Season to taste, then divide the mixture into eight portions.
Spoon a portion onto each cabbage leaf. Tuck the edges of each leaf around the ﬁlling, then roll it up to enclose the filling completely. Arrange in an ovenproof dish with the joins underneath.
Purée the tomato sauce in a blender or food processor and pour it over the cabbage rolls. Sprinkle with the remaining cheese and bake for 30 minutes, or until the cabbage rolls are brown and bubbling hot. Serve hot or warm.