If I understand your question correctly, you've discovered that a duplicate table doesn't share the same relationships as the original. Why keep the data in the table once it's archived? Just deleting all transferred records would keep your ODBC link intact and give you a fresh start each year. Alternately, you could add a date field on the table and transfer only a year at a time.
You understand the issue. Ideally the "archived" data would still be accessible, although the need to access it would be rare, so, while deleting it is possible, some mechanism for accessing it is required.
The current application has 35 layouts that share ~200 fields so remapping them each year would be very tiresome.
The best I have is to have two versions of the application. One that is associated with an archive table that contains data for all years and one that is associated with a table for the current year. This feels a bit ham fisted.