The current transaction validation rules require access to the account trie

The issue I see with option 3 is “the proof can be out of date.” As discussed in this thread, a stale (i.e. outdated) witness is updated by executing transactions since with state root against which the witness was created. This can end up being quite expensive, especially if clients accept witnesses that are more than a few blocks old.