Hmm, so I revisited Kenney's template and basically copied over the code I'd worked out on the other, and...
Positives:
It works!
Negatives:
It exhibits the same bugs, unsurprisingly!
Tried some more things to try to "polish up" the code a little, but none of them have resolved the bugs. Some simply introduced new ones (to be expected as I didn't fully replicate their setup).
I have a vague idea of what the issue is, but not sure of terminology to research solutions. 🤔