I have a requirement to store credit card details (not storing is NOT an option).
Using mcrypt with mcrypt_dev_random to generate init_vector takes varying ages to encry
Remember: the First Rule of Cryptography is "don't do it yourself".
MCRYPT_DEV_URANDOM
is enough for robust encryption, but "managing credit card information" is a much more complicated affair than simply "encrypt 'em all and let God sort out His own".
That "not storing is NOT an option" sounds to me as if you (or better, those above you) Are Doing It Wrong. You should not be researching this, or be the one to propose a solution. Do not be the fall guy.
https://www.pcisecuritystandards.org/merchants/how_to_be_compliant.php