Many thanks to everyone who replied! There is an abundance of distilled corporate wisdom in this monastery.
For those who suggested placing the burden back upon the database - that is something I intend to do. I just need to figure out how to unleash the powers of SQL. Especially when the records being compared are being served by two different frameworks and databases.
Thank you CountZero for the pointer to Array::Compare. That looks like a great near term solution. It may not help much with performance (with the possible exception of moving from hash to array) but should help with elegance until I earn my SQL merit badge.
Cheers!