Basically that's the question - I wonder if
set_transient() overwrites/updates a transient option with the same key?
Maybe, but in my case set_transient() has failed when re-used without delete_transient() first. For some time I thought the problem was that the array I was saving as a transient was too large but that wasn't it. I recommend that you delete the transient first if you're having a problem.