This is for a distributed system: we don't want to have to maintain synchronization of random streams neither enforce uniqueness of pads because this would require some synchronization.
Alice and Bob met once. They agreed on a secret (S) and a symmetric cipher (C). Let's assume S is 128 bits in length.
Then, they want to communicate in the following way.
Alice want to send a message (M) to bob. Alice generate a random number (R). Let's assume R is also 128 bits in length. She symmetrically encrypt R using S and C. This become the message header (H), also 128 bits long. Then, she use R to generate the pad for M, using a cryptographically strong random number generator. The generator she uses must be non repeating: it will never produce the same output twice. She obtain (M'), the encrypted message.
Then, Alice send to Bob the concatenation of H and M'.
On his side, Bob will first decipher H to generate the pad to decipher M'.
I think the risk of reusing a pad is only 1/(2^256), which looks terribly small.
Let's say that if Alice and BOB want a MAC, then they agree on a second secret and a MAC scheme and will encrypt concatenate(MAC(M),M) instead of just M.