Hey Justin,
Thanks for the question. How we determine duplicate content is if two or more pages have a 95% or greater overlap on the code level.
The example you provided has a ~97% overlap. Here's a handy tool for checking these:ย http://www.webconfs.com/similar-page-checker.php
As far as canonical tags, that's a bit of a hairy issue. Here's how we look at canonicals:
Assuming A, B, C, and D are all duplicates,
If A references B as the canonical, then they are not considered duplicates
If A and B both reference C as canonical, A and B are not considered duplicates of each other
If A references C as a canonical, A and B are considered duplicated
If A references C as canonical, B references D, then A and B are considered duplicates
I hope that helps.ย
Cheers,
Joel.