Your third bullet is doing far more work than the rest of the list and I would put it at the top rather than the middle.
Everything else here is a substitution, and substitutions have a ceiling: you are still answering "what do I do with this gap" with an activity. The gap does not require an activity. It took me about a month of being deliberately unentertained before the queue stopped registering as wasted time, and after that most of the tooling became unnecessary: I did not need the book because I did not need anything.
I would also gently push back on framing streaks as the villain. The streak was not what made the language app become a reflex; the reflex was already there and the app inherited it. Remove the streak and I would still have opened it in every gap, because the habit is "reach for phone in gap", not "maintain streak".