I finished a BSc Comp Sci at age 34 after a previous degree and career in HR. Have been working for a few years now as a full-stack engineer and I'm having to fend off recruiters with a stick

I'm very happy and grateful to have a 'good job'. It's not just very possible, but once the ball gets rolling it's quite easy.
I started at University of Pretoria but then finished at UNISA. I stayed in touch with friends from UP and both schools use the same textbooks for almost all of the curriculum. A university like UP will make you do a bit more practical work, but neither will teach you what you need to actually enter the workplace and hit the ground running. You're going to have a lot to learn and most of that learning you will do by yourself, sitting at your PC and creating software - not while studying textbooks or doing homework/assignments.
Then you land your first developer gig after which time you're going to learn 300% faster because you'll be learning from more experienced people and studying others' codebases. Don't sweat being a bit older. Your previous experience will find ways to creep in and you'll find you can contribute to projects in some creative ways, which I'm sure other's will appreciate.
As for ML, no undergraduate degree is going to make you a ML expert. A BSc will give you some theoretical basics but that's enough to get started.