Hi, John,
Thanks for the advice!
Unfortunately, none of this helps. I have tried using my code on a fresh WordPress site, with no plugins installed, using the TwentyFifteen theme, and I get the same results, so it’s not a plugin conflict or a priority issue (and I have also tried changing the priority). Clearing the cache seemed promising, but didn’t change anything.
Using define( 'ACF_LITE', true );
to hide the UI works, but doesn’t solve the problem of my fields not being registered.