Currently, `TransactionEditor` objects are required to implement `applyCustomInternalTransaction()` and `applyCustomExternalTransaction()` for all types they support. This is good for application transactions, but causes issues with builtin transactions (like edges).
T6394 is an example: when dashboard panels were implemented, there was no way to generate an Edge transaction against them, so they correctly omitted internal/external cases for these transaction types. After we added mentions, it became possible and things broke.
It's still good to give editors a callback for these transactions so they can apply effects, and some applications do this. However, we should make it a separate, optional callback, like `applyBuiltinInternal/ExternalTransaction`. Then send builtin transactions through that one, and custom/application transactions through the existing one which requires implementation.