What do you mean by "nested"? You have an Engagement Program, that Engagement Program has Streams, and in these streams you are not using emails, but default programs, right? And these default programs you call nested? Or does nested mean, that the default program lives underneath the Engagement Program?
My first suggestion for simplification would be to not speak of "nested" programs anymore, as that doesn't mean much. It is irrelevant if that program you use within your stream lives underneath your Engagement Program or outside of it. I'd say you're better off referring to that program as "Content Program", as its purpose - I guess - is to hold the email, the tokens, probably the landing pages that are related to your content.
So, regarding Cadence: You can set the cadence either in your Stream - of course - or set it in the Smart Campaign that sends the email and that lives within your Content Program. That Smart Campaign can set the cadence - e.g. like this:

What this cadence should be depends on your use case.
And then you say, you "have a separate program that removes a user". Really, a separate program? I think that should happen in a separate Smart Campaign that controls movements in your Engagement Program. And no, I don't think you should do that through Transition Rules, because Transition Rules are ugly. Control all movements in your Engagement Program through Smart Campaigns - recurring batches most likely - that live in a folder "Nurture Control" in your Engagement Program. Name these Smart Campaigns after what they are doing like:
- Enter Engagement Program
- Move to Stream B
- Move to Stream C
- Move to Inactive Stream
Again, these Smart Campaign only organize Engagement Program traffic, they don't send emails.