Since you just have the 3 conditions, seemingly, I’d probably use a combination of Set Properties and Retrieve Items to perform the initial separations in the Workflow.
So you’d start with something like this:

We start by setting a BatchID using %U. This ensures that in the following steps we’re getting records from this job and only this job. Then we run the Datamapping and Create Print Content as normal. Lastly, we use Set Properties to tag each Content Item with that BatchID
From here we’ll branch, retrieve a subset, and then finish processing with a Job Preset and Output Preset.

That Retrieve Items then looks something like this, where we retrieve Content Items by the BatchID and our other condition. In this case, if Address2 is empty:
This whole branch may then be repeated with a different Retrieve Items without the need of re-running the Datamapper and Content Creation. They’re already stored. So getting everyone who’s last name is Smith from that set is just another query, just as is getting everyone who is NOT a Smith and address is NOT empty
On this last set, you’d likely want to get into different job presets and output presets to allow you to perform the Size Grouping separation you’re after