Versioning a dataset in an RDBMS using initials and deltas (xpost from SO)
If the "bunch of work to translate it" is occurring during the transaction, then that is adding to the transaction time.  If you can do bulk processing on the data to translate it before you start dong inserts/updates/deletes that would at least decrease the transaction time providing fewer opportunities for contention.

An alternative would be to maintain a copy of the table and make your changes on the copy and then during a brief outage window swap the table names.  The downside is the added storage and the outage window, but the advantage is zero contention.

Update:

I see a couple difficulties with your solution.  Inserts would still cause contention if there were unique indexes on the table.  Updates would become inserts, so those wouldn't be any more difficult.  Deletes would have to be handled somehow.  You could insert a blank record with the delta number to indicate that the record has been deleted.  I'm concerned that the view necessary to pull this data together for querying would be too slow.

Perhaps someone with MySQL knowledge could suggest something.