Additionally, the input address isn't actually gotten from any public key in the input. Rather that address is retrieved by checking the specified output since there are special p2sh addresses that exist that don't even use public keys anywhere in them.
It is possible to determine the addresses based on the pubkeys or redeem scripts when those appear in input scripts, without having to check the transaction that is being spent.
Maybe I'm using the wrong terminology here, but I can show you an example if you want.
I know that, but when properly validating a transaction, in some cases such as this one, there is no need to have the input scripts have the necessary data to derive the address. Properly validating a transaction means that the node will still need to fetch the necessary output script in order to determine that the input script properly spends the output. Modern transactions use the hash160, and in order to get the hash160 properly, the public key (the digest)is required so that it can be used to check the signature (since the hash160 can't provide the public key to do that) and then checked against the hash160 to ensure that it is the proper public key. However, in this case, the pubkey is already supplied by the output script, so it is not necessary to include the public key in the input script since the input script will validate directly against the public key provided by the output.