Maybe use the datastore to store the post then get a scheduled task to select a new post every 5 minutes or so. You may find it quick to select pre-parsed posts from the postparsed table (if you have post caching on).
Instead of doing multple str_replace()s you can put the search and replace values into seperate arrays. E.g.
PHP Code:
$search = array('[B]', '[/B]', ....);
$replace = array('<b>', '</b>', ....);
str_replace($search, $replace, $Qtext);