However, it's a bummer, since it would have been of great help for common people, especially as after the next difficulty adjustment (i.e. in less than 3 days) the fees will probably rise again.
If 2 things happen we won't see any big fee spikes any time soon even with price surges or even if we see another small hashrate drop.
1. (smaller effect) If multi-sig users start using Schnorr instead after activation of it.
2. (biggest effect) If we move the traffic from big bitcoin exchanges to lightning network. If you look at each big fee spike in history they are almost always happening because bitcoin price either goes up A LOT or drops A LOT. That means the extra on-chain transactions are from traders. If that is moved to LN the on-chain capacity is left for other transactions. Not to mention the ability to deposit/withdraw bitcoins in an instant with virtually no fee while being in full control of the keys instead of having to leave them on the exchanges.
If you have 10 inputs in a transaction, all 10 inputs will need to be in the transaction, even if they are all from the same key. If each address had a balance instead of unspent outputs, a transaction with 10 inputs could be potentially reduced to a single input with a nonce and an amount (and a signature).
Bitcoin design is based on outputs not addresses and balances so it is not possible to do this without significant changes to the protocol.
However it could be implemented as a softfork with a new witness version for example. Something like this:
Assume an address has 5 UTXOs and you want to spend 2 of it (input 1 and 3) in a transaction while aggregating their signatures: (P2W3 is pay to witness version 3 as an example)
[
[input0_addrA_P2PKH][sig0]
[input1_addrB_P2W3][empty_sig]
[input2_addrC_P2WPKH][empty_sig]
[input3_addrB_P2W3][empty_sig]
[witness0_empty]
[witness1_witnessB]
[witness2_witnessC]
[witness3_empty]
]
[witness1_witnessA] = [1][3][signature][pubkey]
[1][3] are integers saying the follow up signature is for inputs at index 1 and 3 then signature and public key is used in OP_CHECKSIG and witness3 is empty because we have already added the signature for both inputs in witnessB