While others have sufficiently covered (1), I'd like to point out a very cheap alternative to key encapsulation for (2); $<4$ bytes per key.
Because this does not use key-encapsulation this is incompatible with all existing keys, but all keys derived under this scheme are safe.
First we start by defining a root key from in your case a single (or few) password(s). I recommend that you use Argon2i, a data-independent Memory Hard Function (iMHF) that resists adversarial hardware acceleration.
let root = argon2i(salt, passphrase);
RSA key generation recap (simplified):
Find two prime numbers $p$ and $q$ independently starting at an $N$-bit random odd number, incrementing by $2$ until the prime checks pass.
Evaluate $n = qp, \lambda = lcm(p - 1, q - 1), e = 2^{16} + 1, d = e^{-1} \pmod \lambda$
By using a PRG and a seed we derive deterministic RSA keys. Although this is initially no faster than normal, we record tiny artifacts to skip the slow step of finding primes.
It would be a good idea to mask the offsets such that they do not reveal the fact that the prime number is at least $\text{offset} * 2$ after another prime. The mask, like the PRG must be unique per seed.
To generate the $k$-th key we call (PSEUDOCODE);
let seed = kdf(root, k);
let (d, n, offsets) = RSA::from_seed(seed);
We can assume the value of $e$, use $(d, n)$ to decrypt (or sign) and publish $n$ as our public key. The masked-offsets may be stored or published for the world to see.
How large are these offsets? While being overly conservative we can use $16$-bit numbers as counters to represent the $\text{offset} * 2$ distance from the initial PRG random number. This is overkill because it supports up to a prime gap of $2^{17}$ while the largest known gap is only $8350$.
One offset per prime totaling to 4-bytes.
To recover the key just apply the offsets with the seed (PSEUDOCODE):
let (d, n) = RSA::from_offsets(seed, offsets);
This skips finding prime numbers and assumes the claimed offsets are safe, trusting the offsets were produced correctly for this seed. You may of course verify that it derives primes.