Failed CHECK(MULTI)SIG operation - BIP143 hash pre-image
After a while of debugging, I was able to find the issue. 

My previous assumption that I was committing the wrong data to the hash was correct. 

The transaction ID that is needed to construct hashPrevouts and outpoint was incorrect. I needed to reverse the bytes of this value for the hash to be correct.

For example:


b9d615615976600739be12a67f326836e4256d7d1c4fe50163536ad8dd7647c3 (a searchable txid on Bitcoin testnet)


becomes...


c34776ddd86a536301e54f1c7d6d25e43668327fa612be39076076596115d6b9. 


In summary, my advice would be to step through the interpreter and reevaluate your assumptions of all the data that you're committing to the hash for signing.

A little bit of code never hurts,

Typescript: Buffer.from(transactionId, "hex").reverse().toString("hex");