I’ve now got it going to my satisfaction, but only by patching the SDL source which I’m never keen on.
The underlying problem seems to be that SDL expects a SOURCE_DPAD button event to be converted to an SDL_JoyButtonEvent, but that only works if the ‘joystick’ has been opened; otherwise the event is discarded. How is one to know which ‘joystick’ to open anyway?
In my opinion the button event shouldn’t be discarded in that case but rather a SDL_KeyboardEvent should be generated instead (there is a mapping for the DPAD buttons to scancodes in SDL_androidkeyboard.c so it looks as though this was anticipated). Other buttons on the remote generate keyboard events as standard.
To achieve this state of affairs I’ve had to edit both sdlActivity.java and SDL_sysjoystick.c.