The description of the Yearling badge is:
Active member for a year, earning at least 200 reputation. This badge can be awarded multiple times.
That means you only get the badge for years in which you earned 200 reputation on the site. So if you'd asked one or more questions and received upvotes on them some previous year, you might have fallen short of getting the 200 reputation under the old system. If under the brand new (or perhaps, original) reputation system you do earn 200 reputation for the year, you get the badge for that year. (You can earn the badge even if you didn't participate on the site during the year, by the way.)
Unfortunately, there is currently no way to determine from the badge award page which year you've just earned:
I'm pretty sure one of them is this year, but I can't be sure unless I look in the database. But that's odd, I didn't earn 200 reputation any of the years on TeX/LaTeX, but I have 4 Yearlings:
Year Reputation gain
In fact, it appears the code doesn't exactly do what the description implies:
Select [some columns]
From IntegerRangeCTE years
Cross Join [some other tables]
Where DATEADD(Year, years.i, u.CreationDate) < GETUTCDATE()
And u.Reputation > years.i * 200
Group By [selected columns]
Having COUNT(years.i) > IsNull(b.BadgeCount, 0)
In other words, it seems the code effectively divides the user's reputation by 200 (rounded down) and makes sure that they've served at least that many years and awards no more badges than the user has been on the site. (I believe
IntegerRangeCTE is described in this answer.) So my reputation on TeX/LaTeX went from 585 (two badges) to 825 (four badges) because of question votes and I suddenly earn two more Yearlings.
I don't know if that's reasonable way to award the badge, but it's not really how I read the badge description. Most likely this is a good enough approximation unless you are changing the reputation payout for questions or something crazy like that. At any rate, I think it does explain all the extra Yearling badges.