It should be extremely easy. Just listen to the rendered post function and try to fetch it from the cache (#postid) first before executing it. If its not in there yet, run the rendered post function and save the result to the cache (#postid). Should be around 10 lines of code.
Considering the performance of the file cache adapter of Zend Cache, I'm not sure that performance would be improved.
The APC cache is too small to contain hundreds or thousands of messages, so caching rendered posts would be only interesting with Memcached.
In my opinion, save the messages pre-rendered in the database would be sufficient for most users.
I did build one (it ends up making threads render about twice as fast overall). But it was really designed for in-house use (doesn't take into account style or language variations since my site only uses one style and one language) and doesn't take into account special permissions with attachments (everyone can see attachments that can see the post they are in on my site).