Hi @therealbmills!
Thanks for reaching out and sharing all of these details!
It sounds like one option is to use Javascript to combine the changeSet with the original data, so that you can work with the full dataset, including pending edits. We have a community post here that describes how to do this.
Generally speaking, most use cases I have seen do include a primary key. Our new table component even has a field where you can define the primary key on the Retool side. If you can move forward with implementing primary keys on your tables, I do think it'll ultimately be easier to work with in Retool.