I don't practice sending CW -- any chance this is slowing down my ear training?
Probably not . . .
The sending of letters seemed very easy to learn and (whether my fist is polished or not) was able to bang out pretty much any message within weeks of starting Morse code. This is apparently fairly common and even some official testing practices simply assume that if you can copy code you probably don't have trouble sending it (e.g. "[...] the FCC rules provide that passing a telegraphy receiving examination is adequate proof of an examinee's ability to both send and receive telegraphy [...]").
Yup - one set of 35 or so things to learn - you generate them inside your brain and bash them out at your own speed . . . quite easy
. . . and you already learned to send. In a month ?
But this is kind of funny, because some like to think of Morse code as a "language" (e.g. http://k4icy.com/cw_language.htm and https://www.kb6nu.com/wp-content/uploads/2017/11/LearningMorseCodeasaLanguageVersion2.6June2015.pdf).
They do - but no-one has ever claimed linguists learn morse faster - mostly people claim that musicians do so . . . probably without merit as decoding letter text isn't musical.
If that's true it's the only language I'm learning where I'm less likely to get tongue tied *speaking* than totally blank *listening*. But usually we don't recommend learning a language by totally neglecting half the job; we build both the "TX" and the "RX" skills together.
Is it possible that (part of) the reason it's taking months/years to learn to hear the letters is because I don't much practice sounding them myself?
Learning morse is not like learning a language with verb nouns etc and various complex sounds where you can build up slowly with part meanings and slowly extend your vocabulary.
It is like learning a language in that practice means you soon don't have to think much about what you are hearing - the meaning just pops into your head.
It isn't like learning a language in that you get everything in bits and have to assemble it inside your head before looking at the meaning.
The problems people have with morse are often built around too high an expectation of success,
caused by stories of Koch teaching students in a few hours and people getting to 25/25 in a week.
This means that after a few months lots of students start wondering if they should be doing something else - even if they don't start getting bored with lack of progress.
You should allow several months to achieve proficiency and if it takes you a year or more - don't be surprised.
It's not a trivial exercise for ordinary mortals.
You are probably aiming to be able to decode more in your head as you hear it at 15/25 wpm whilst running a HAM QSO
( of course I am guessing here, maybe you just want to type out encrypted gobbledegook - or maybe you want 30wpm )
The main factor in learning ( to decode ) morse is aptitude - built up of several factors including hearing, spelling, short term memory etc
After that the remaining factor is repeated decoding until yu have done it so often it happens without you really thinking about it.
Getting to the point where you decode morse in your head means you are learning to :-
Listening to code in headphones - possibly with background noise - possibly too loud / quiet
Distinguishing the specific code stream you are following from all that noise; working out the timing; remembering what you just heard whilst continuing to listen
Decoding the morse characters you just heard - whilst continuing listening to and remembering the next incoming characters
Remembering what you just decoded - whilst decoding the next characters and distinguishing and remembering the next morse characters
Putting what you decoded together to get it's meaning - from abbrevs, procedure codes etc - whilst decoding and remembering the next chars, whilst hearing and remembering the next morse etc
This takes lots of practice and repetition - until it becomes an automatic reaction.
So - there are no short-cuts here if you don't have very high aptitude.
It can take ages.
There are a few gotchas to avoid - the main one seems to be becoming tied to a keyboard i.e hear morse->press-a-key instead of hear morse->character-pops-into-your-head
So probably you are doing OK. Keep decoding.
YMMV as ever