Generating IV in TLS 1.2 I'm writing a TLS 1.2 implementation (in C#) using a custom protocol.
My question is how to generate the IV attached to each message, I don't want to use RandonNumberGenerator because I've heard it is slow.  Instead, I would like to use some PRNG. I'm only going to suppport AES-128/-256.
From reading around I understand that using a random IV and encrypting a counter (should start at a random number) and use that as the IV is OK.  Is that true? After how many uses should I use a new random IV? Can I use the same key for generating the IV and encrypting the message?
Is using .Net's Random class with a seed from RNGCryptoServiceProvider can do the work? After how many uses should I use a new seed?
To answer your specific questions:


  From reading around I understand that ... encrypting a counter and use that as the IV is OK,
     is that true?


For CBC mode, that is absolutely true, as long as the key that you use to encrypt the counter is secret (that is, not known to any possible adversary).


  Should I start in random number?


Actually, that's a matter of taste; you could start with 0 if you wished.

If you use a known counter, the attacker would learn the encryption of (for example)  [0], [1], [2], etc.  This isn't much of a problem with CBC mode; whenever you encrypt known plaintext, the attacker gets several more known plaintext/ciphertext pairs.  This helps the attacker only if in the future, the CBC mode happens to use the exact same plaintext (to generate the exact same ciphertext), with AES, you have $2^{128}$ possible plaintext/ciphertext pairs; accidentally reusing one is improbable (and so adding a few more because you encrypt a few known counters isn't going to be harmful.

Now, if it's convenient to start at a random number, well, that doesn't hurt anything.  However, I wouldn't do it unless it was easy.


  After how many uses should I use a new random IV?


There's no requirement to ever reseed your counter.  You'd run into problems if you encrypt more than $2^{64}$ messages or so; however CBC mode will already run into problems in that case (and you wouldn't be able to encrypt that many messages in a reasonable amount of time anyways).


  Can I use the same key for generating the IV and encrypting the message?


Not only can you, you're better off if you use the same key.  Remember where I said the key you encrypt the counter should be "not known to any possible adversary"?  Well, we already have such a key; the key you use to encrypt the message.  After all, if an adversary does have that key, he can read the message already; any weakness stemming from the IV being predictable is irrelevant.  Hence, by using the same key to do both, we reduce the number of secrets we need to keep from an adversary.

One small caveat: if you reuse the key in this way, the attacker shouldn't be allowed to choose or control the counter.  It would be fine to use a counter that starts at 0, or a counter with a random starting point (where the starting point is generated using RandomNumberGenerator) as you suggested.