Recent does not always equate with Stable.
Code choices should generally be driven by your business requirements & the tolerance for uptime in your particular environment (to evaluate your level of freedom, consider how resilient your network is in the first place -- e.g. does maintenance on a node take your network out of service or not?).
- feature sets, check CCO there are a few good powerpoints on how the feature licensing is broken down. License for what you need. If a train of code does not have features in it you don't need to begin with, then you don't have to deal with bugs about them.
- "latest/greatest" is sometimes a pitfall. Use Cisco's SafeHarbour testing validations as a guideline.
- avail yourself of published Release Notes and bug-scrub any release you are considering using the BugTool before you roll it out into production usage.
- if you are under any audit requirements to address security defects in xxx period of time, evaluate risk depending on your situation
- follow your change & release management processes (or develop them if you do not have them)
- TEST TEST TEST then VERIFY VERIFY VERIFY
Good luck!
R.