Cranberry Sauce: Combine water and sugar; heat until dissolved. Add cranberries and cook until burst and thickened (8–20 mins). Cool completely and chill for 1 hour.
Cake Layers: Preheat oven to 350°F. Whisk dry ingredients. Cream butter, oil, and sugar. Beat in egg whites, sour cream, and vanilla. Alternate adding dry ingredients with the milk/vinegar mixture. Divide batter between two prepared 8-inch pans and bake for 32–38 minutes. Cool completely.
Frosting Base: Whisk sugar, flour, and salt in a pot. Gradually whisk in milk. Cook over medium-low heat until boiled and thickened (approx. 10 mins). Pour into a bowl, cover surface with plastic wrap, and cool completely (approx. 2 hours).
Frosting: Cream softened butter until pale and fluffy. Gradually beat the cooled milk base into the butter, 2 Tbsp at a time, until light and fluffy. Beat in vanilla.
Assemble: Slice each cake into two layers (4 total). Layer cake, thin frosting, and cranberry sauce (leaving a ½-inch border). Apply a thin crumb coat and chill for 30 minutes. Finish frosting and chill for at least 1 hour before slicing.