Rather than creating separate JCR node type for each content type, I'd use sling:resourceType
property. So you could create new blog post with jcr:primaryType=nt:unstructured
and add property sling:resourceType=blog/post
to it.
Moving to your question: you could create new component /apps/blog/recentPosts
(and script like /apps/blog/recentPosts/html.jsp
) and then set sling:resourceType=blog/recentPosts
property on the /content/blog
node to tell Sling which script should be used to render this piece of content.