terdon set me in the right direction: inputrc file.
The culprit is that quite non-intuitively, readline6 actually uses ~/.inputrc instead of /etc/inputrc, which readline(3) does not emphasize nor rebute:
The name of this file is taken from the value of the INPUTRC
environment variable. If that variable is unset, the default is
~/.inputrc. If that file does not exist or cannot be read,
the ultimate default is /etc/inputrc.
So while in on both Debian machines /etc/inputrc is identical to that provided by libreadline6 package (the version is the same as well), on the newer machine ~/.inputrc exists with single line: set bell-style none. When this file is deleted, all works fine (see notes below).
I can't check Fedora until tomorrow but I guess it's the same problem. Update: On Fedora, ~/.inputrc did not exist, here the /etc/inputrc is simply different so it may not define this. As a hotfix I simply saved Debian's inputrc as my ~/.inputrc.
Notes:
The mystery how it got changed during 7>8 upgrade remains unresolved, but partly can be accounted to my bad memory and some unintentional dotfiles' juggling. (BTW it was was not APT upgrade but rather reinstall and manual dotfile moving so maybe the ~.inputrc got in the way somehow.)
Also, When I say OK, I mean that it works with Ctrl everywhere except Rxvt (OK, I only checked xfce4-terminal but we know Rxvt is the usual rebel), where this is remapped to Alt, apparently because Ctrl is taken by Rxvt-specific functionality--move active tab in list.
As manpage mentions, with bash you can use built-in bind command to investigate what you currently have.