Does Electrum just use my seed to re-add addresses 1 at a time until there are 5 unused addresses in the list?
Basically this is actually what it does, presuming your gap limit is set to five. I'm not sure how change addresses are differentiated internally at the moment, so I will leave that question open.