Having tested around this seems to be an issue when using an external keyboard with an Android Studio emulator.
I've managed to reproduce the infinite loop when typing using an external keyboard in both my production app and a brand new app, using the code in the question.
Using the emulator keyboard and using a real device keyboard doesn't cause the infinite loop issue when using a TextFieldValue.
I can only assume this is a bug with the Emulator.