One other thing you could try is a small table (or series of tables) that give the oldest valid date for a table. Then join to that.
In other words, if you have the PrintJobs table and the Labels table, each with information you need. You create a Valid_Dates table, with a single field/column. My queries go from:
select printjobs, jobdate, job
from PrintJobs
to
create valid_dates ( valid_Date datetime);
select printjobs, jobdate, job
from PrintJobs
inner join Valid_Dates
on jobdate >= valid_Date
Then you can adjust this date in Valid_Dates as you archive data. Perhaps before you remove data, reset the valid date for queries.
You could even start replacing the current tables with views that use this technique. We used to do this with financial information, but in the opposite direction. All queries looked at valid dates, but we could load new data into tables without it being considered until we were ready. That way if we needed to change, or delete/reload, we could for data sets. When we were ready, updated the date in the table to let queries get new data.
It's really poor man's partitioning, but within a single table and letting us set certain "rows" as valid with a join condition.