I think the low level opcodes we have are fine as is. Basically, that you can recover an ecdsa public key given a signature, a message, and a recovery ID. It is a bit hackish looking, but that is just how ecdsa works since the math makes it not possible to recover a signing public key unless you have the recovery ID.
Now, the Solidity
ecrecover function just wraps
ecrecover. That function could be adjusted to have a nicer, higher-level API that could account for chain ID now being a part of the EVM (since it is mixed into the definition via EIP-155), but as @axic said this is an “application” level discussion (really compiler discussion) of how to adapt the API to make it more ergonomic and account for new EVM features.
I’m fine with continuing that discussion here, as it would be good to be aligned on this API between different compilers and client-side libraries.