Ok, I found no way to manually get Installer 2.0 on my virtual box win98 SE installation.
But I found this: Unofficial Windows 98 SE service pack 2.1e
After installing that, I was able to install .NET 2.0 redístributable without problems.
Which means that the prerequisite of Installer 2.0 being on the system is fulfilled after installation of that pack.
Edit: good news, see further below -
Unfortunately, the English versions of that pack are not available anymore (the site I linked links to wayback machine snapshots which don't have the binaries).
The site I linked has the German and Polish language versions.
I guess it could create some problems when mixing those with an English base installation of Windows 98.
Take it for what it's worth.
Edit:
Knol made me aware of the English "unofficial SP 2.1" being available at this location.
Installing the correct language versions for such things seems to be important for more reasons than not understanding some dialogs - see my "experiment" description below.
I proceeded to install it on my mentioned Win98se English VirtualBox image from archive.org - and it worked there.
The German pack would allow me to, after allowing me to install .NET 2.0 redistributable, run .NET 2.0 console apps, but a WinForms app with a bunch of controls slapped onto a form crashed - it runs now with the correct language SP 2.1.
Same goes for my Pentium II that I dug out of the basement, which actually does have a German Win98se base installation and now the German "SP 2.1" on it plus .NET2.0 redistributable - that machine now also runs .NET 2.0 console as well as (so far simple) GUI apps. So it's not like the German pack was broken itself.
[Off Topic side note] To any (retro enthusiast) one wondering about the purpose (besides being able to install more programs that would still run under Win98 but need Installer 2.0):
This will now make my endeavours of doing retro stuff on Win98 much easier, writing little tools here in a bearable version of C# (compared to .NET 1.1, which e.g. does not have generics and hence makes you use 'object' a lot, source of bugs) that actually run on Win98, in a way much less time consuming than mucking with old Win32 API / Winsock stuff, with an old C++ compiler that may not even properly support C++98. Add unpleasant to time consuming - not everything retro is fun ;).