The knife tool in bmesh does not destroy UVs for me.
I was gonna recommend this, but when I tried it myself on a cube it didn’t work. I’ve since figured it fails to slide the vertices on UV borders. (so on a cube it fails completely, if each face is an island of its own)
Also you can’t remove an edge loop without UV annihilation.
Since deleting an edge loop is really a hack combining slide edges and remove doubles (which causes other problems too, eg with edge tags) you can actually take advantage of the “correct UVs” setting. Call the edge slide operator once and check the “correct uv” setting. Then, when you call the “delete edge loop” operator it will remember that setting.
Yeah, it’s stupid. File a bug for it