There are a lot of good ideas here. Here's my approach
I prefer a minimalist base in terms of underlying bulk and I don't like to sweat (which comes easily for me)...add and subtract as needed depending on the day.
1. smartwool or icebreaker or some other brand wool t-shirt or long-sleeve t-shirt shirt
2. Patagonia Capiline Air Hoody. It has a very thin but warm layer so doesn't bulk up under the shell or other layers. the hoody also serves as a quasi face covering for standing in lift lines. This is an incredibly impressive piece of clothing. I wear this in long-underwear also. Magic, It's like something out of Lord of the Rings Elfish world.
3. Patagonia airshed wind shirt. (hard to find now that they replaced it with Houdini Air but other company windshirts like OR, Rab are good too). This goes over the hoody but under your jacket.
OR substituted 2 and 3 on super cold days (and if budget doesn't allow for 2 and 3) with a dual base layer like Smartwool 250/Icebreaker 260 and then a generic wool sweater from basically anywhere, but I'm partial to JCrew wool after season sales. For example, right now at JCrew factory their wool sweaters are only $20-$35 after discounts. slim pickings though. Another option I do is Ebay to buy wool sweaters. So cheap for generally quality stuff like Patagonia/Orvis/etc. You should be able to find quality for $40 or less.
4. Patagonia NanoAir Hoody jacket or Patagonia R2 Techface Hoody. Always a head-tight hoody for helmet warmth. The Patagonia hoodys are some of the best for under the helmet. They also don't bulk and choke you if you're not wearing them. Prefer NanoAir over r2 Tech, but both are Breathable and warm when it needs to be. Excellent pocket placement for food and phones. Other options are OR Uber (no longer made, but OR has similar called Ascendant and Refuge), MH Kor Strata, or Arcteryx Proton or Atom LT (Proton has better pockets and is more breathable, but also more expensive). The hoodys on these jackets aren't as good as the patagonia for how I want to wear a hood under a helmet. If you don't care, then Proton or NanoAir are basically similar.
5. Shell - I use either Marmot (soft) or Arcteryx (Hard-Gortex 2 or 3 layer).
I don't like puffy's because they don't breathe and can choke the neck when the shell is fully zipped.
Finally, I never pay retail on any of this. I'm patient. So options are end of season sales and/or Ebay, steep&cheap, factorywebsites of the brands you shop, etc. I'll also buy used on Ebay. I don't think I've ever paid more than 25% off because even the brand sites will occassionally offer 25% off sales.
Hopefully this helps.