Thanks Juraj,
the initial version was 12.0.65.
The macros were inserted to the static html text area via the ckeditor.
Like I said, calling ltlText.EnableViewState = (ControlsHelper.ResolveDynamicControls(this));
in the code behind was working for widgets (and still works when it's a webpart) up until the upgrade to v12.0.98.
I can solve the issue now by calling ltlText.Text = MacroResolver.Resolve(Text);
, it just means now I have to apply the fix to pretty much all my widgets.