Do you have to keep broadcasting transactions until mined?
But this doesn't make sense to me... I assumed that transactions must
be mined in the next block, since your transaction also includes the
hash of the previous block in order to prevent double-spending. Is
this assumption correct?

This is not correct, the transaction does not reference blocks, it references outputs. A block references the previous block.
To answer your question, no, you only have to broadcast your transaction once. In some cases that the mempool is too large, nodes might start deleting transactions from their mempool starting with the ones with the lower fees. In that case if your set fee is too low you might want to rebroadcast it.
Miners of course cannot mine the same transaction twice because as you said a transaction spends the input coins and therefore you cannot spend them again.