Full credit to Geoffrey Booth for sending this in the right direction. The full technical answer to the original question follows. The short answer is yes, it IS possible to target specific nested templates using iron-router as Geoffrey mentioned. The more involved answer: there is likely a better alternative depending on your use case...see comments to Geoffrey's answer for a good discussion.
The full working code using the example in the original question:
The html
<template name="layout">
{{> yield region='header'}}
{{> yield region='body'}}
{{> yield region='footer'}}
</template>
<template name="foo">
//bunch of intro text
{{> yield}}
//a big CTA
</template>
<template name="bar">
{{this.something}}
</template>
and the router
Router.onBeforeAction('loading');
Router.map(function () {
this.route('home', {
path: '/',
template: 'bar',
layoutTemplate: 'layout',
loadingTemplate: 'loading',
notFoundTemplate: 'notFound',
yieldTemplates: {
'myHeader': {to: 'header'},
'myFooter': {to: 'footer'},
'foo': {to: 'body'}
},
waitOn: function () {
return Meteor.subscribe('baz');
},
data: function () {
return Baz.find();
}
});
});