For my own reference and if somebody is still looking for a way to accomplish this:
After apparently almost five years and some experiments, as well as trying to live with the number row, I recently had another shot at this.
What I had tried previously:
autokey - Didn't work, because while the remapping was possible, some input fields on websites or more advanced software would not accept the numbers. I do not know if this was due to autokey's implementation or if some programs are listening to modifier keys and overwrite the keyboard layer switching.
xmodmap - Worked to some extent, but unfortunately KDE Plasma has serious issues with it and would crash when a custom mapping was enabled. Also, if the session is closed or the keyboard gets disconnected, the mapping has to be applied again manually, which became a hassle for me repeatedly.
So, I had another look at the xkb extension and found out that there actually is a way to accomplish this:
My previous issue (also the one with Katu's solution) was that I live in Europe and need to use predefined 3rd-level AltGr characters like é or ä sometimes, which means that I couldn't simply free those key levels without moving these characters to less logical positions.
However, xkb actually supports a 5th level mapping with its own modifier key that enables another keyboard layer altogether, allowing to enter up to 8 symbols per key, depending on the combination of modifiers.
I probably haven't found this option before, just because I searched for a "4th level" instead of a 5th and none of the language configs I saw had additional characters defined beyond 3rd/4th level.
To enable 5th level mapping on any language config, just two lines need to be added:
key.type[Group1] = "EIGHT_LEVEL";
include "level5(rwin_switch_lock)"
The key.type parameter enables additional levels from 5-8 for each key config while the line include "level5()" sets the key that acts as the modifier to access those additional levels. I added rwin_switch_lock in the example, because that's what I chose to access my numpad, but there are other default options as defined in /usr/share/X11/xkb/symbols/level5:
rctrl_switch (Right Control)
lsgt_switch (Lesser/Greater key on European keyboards)
ralt_switch (Right Alt/AltGr)
caps_switch (Caps Lock)
These also exist as locking keys, including Super L, although these keys do act like layer switches for me too (only while being pressed), so I'm unsure of the difference:
lsgt_switch_lock (Lesser/Greater key on European keyboards)
lwin_switch_lock (Super L)
ralt_switch_lock (Right Alt/AltGr)
rwin_switch_lock (Super R)
You can also add modifier_mapping to turn every key into the level 5 modifier switch by changing its only function to { [ ISO_Level5_Shift ] }.
After adding the key.type line and including a modifier switch, any key in the language config can be extended with up to 8 levels of symbols, like so:
key <AD01> { [ q, Q, oe, OE, 7 ] };
key <AD02> { [ w, W, dead_abovedot, dead_abovedot, 8 ] };
key <AD03> { [ e, E, eacute, Eacute, 9 ] };
key <AC01> { [ a, A, aacute, Aacute, 4 ] };
key <AC02> { [ s, S, ssharp, 0x1001E9E, 5 ] };
key <AC03> { [ d, D, eth, ETH, 6 ] };
key <LSGT> { [ backslash, bar, dead_grave, dead_acute, 0, plus ] };
key <AB01> { [ z, Z, leftanglebracket, rightanglebracket, 1, minus ] };
key <AB02> { [ x, X, multiply, approximate, 2, multiply ] };
key <AB03> { [ c, C, dead_cedilla, cedilla, 3, division ] };
In this case, I used the Irish language config (/usr/share/X11/xkb/symbols/ie) as the basis and copied it to /usr/share/X11/xkb/symbols/ie_mod to add the 5th level numpad and I also added basic mathematic operators to the lower row of keys on level 6 (accessed via Super L + Shift).
Afterward, the modified language config file can be included into the list of languages by adding it as an additional layout to /usr/share/X11/xkb/rules/evdev.xml in the <layoutList> section:
<layout>
<configItem>
<name>ie_mod</name>
<shortDescription>IE Mod</shortDescription>
<description>Irish Modded</description>
<countryList>
<iso3166Id>IE</iso3166Id>
</countryList>
<languageList>
<iso639Id>eng</iso639Id>
</languageList>
</configItem>
</layout>
(as also per Katu's answer)
The great advantage of this approach is that this mapping works everywhere, survives session logouts and even works on the lockscreen, so it is possible to enter user passwords this way.
Caveat: I am unsure if these edits will survive (major) updates and it's not possible to add a custom language config this way without root access. If someone knows a way to make this more portable and without requiring access to the system directories, please do tell me. I've tried adding the language config to the home directories via this guide, but it didn't show up. I also tried deleting the xkb cache, but that didn't work, either.