Ok. So let's try something. Make your zpool and MD5 the partition tables like you did before. But, before shutting down the server go to the CLI and do zpool export yourpoolname. Then physically pull the drives from the server. Do a reboot of the server like you have been. Then when the server has booted back up put the disks back in the machine. Then do a zpool import -R /mnt yourpoolname and check the MD5s.
If that works, then we've kind-of narrowed down the problem to something happening at shutdown or at bootup(which I think we are kind of expecting right now). So now leave the disks in and do a shutdown. After the system powers off pull the drives, then bootup the server, then add your drives and do the same zpool import command again. Check your MD5s.
If that works, then export your pool again, do a shutdown with the disks physically removed, then plug the drives in and bootup.
This is to figure out if the boot and/or shutdown are responsible for the corruption. I'm wondering if the process of powering down the system is causing a voltage spike or something that is causing data to be written to the backup GPT. The backup GPT is one of the sectors closest to where the heads park, so naturally if something is going wrong during shutdown and the heads are writing data to the media, the backup GPT is the one that you'd expect to get trashed.
One thing that is weird to me. Your problem on bare metal has a striking similarity to how ESXi users see their pools die when they do RDM. It could be random chance, but there may be a correlation. I'm not sure which(I tend to think random chance) but I'm not ready to make that assumption just yet.
One thing you might hate that I'm about to say. Quite often servers provide a list of OSes supported. Generally the list is fairly complete. That is, if FreeBSD isn't on the list and people are having problems it tends to make sense. If you look up your motherboard compatibility matix, http://www.tyan.com/tech/OS_Support_IntelWins.aspx , you'll find that FreeBSD isn't on their list, now every time I've tried to help someone with something we can't solve the OS matrix never showed FreeBSD as supported. I don't normally trust those matrixes because they may just not test them. But, this does make me wonder if there's some kind of incompatibility at work...
Stupid thing we never thought of.. can you run the following command and provide the output in pastebin or something....
smartctl -a /dev/XXX where you use your drive device names? Just going to check your hard drives.
todd@ubuntu-test:~$ sudo smartctl -a /dev/sdb
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.5.0-23-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
 
=== START OF INFORMATION SECTION ===
Model Family:    SAMSUNG SpinPoint F1 DT
Device Model:    SAMSUNG HD753LJ
Serial Number:    S13UJDWQ601618
LU WWN Device Id: 5 0000f0 003066181
Firmware Version: 1AA01112
User Capacity:    750,156,374,016 bytes [750 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:  8
ATA Standard is:  ATA-8-ACS revision 3b
Local Time is:    Mon Jan  6 22:34:10 2014 EST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
 
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
 
General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                                        was never started.
                                        Auto Offline Data Collection: Disabled.
Self-test execution status:      (  0) The previous self-test routine completed
                                        without error or no self-test has ever
                                        been run.
Total time to complete Offline
data collection:                (10939) seconds.
Offline data collection
capabilities:                    (0x7b) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        Offline surface scan supported.
                                        Self-test supported.
                                        Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine
recommended polling time:        (  2) minutes.
Extended self-test routine
recommended polling time:        ( 183) minutes.
Conveyance self-test routine
recommended polling time:        (  20) minutes.
SCT capabilities:              (0x003f) SCT Status supported.
                                        SCT Error Recovery Control supported.
                                        SCT Feature Control supported.
                                        SCT Data Table supported.
 
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG    VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate    0x000f  100  099  051    Pre-fail  Always      -      0
  3 Spin_Up_Time            0x0007  065  065  011    Pre-fail  Always      -      11290
  4 Start_Stop_Count        0x0032  100  100  000    Old_age  Always      -      101
  5 Reallocated_Sector_Ct  0x0033  100  100  010    Pre-fail  Always      -      0
  7 Seek_Error_Rate        0x000f  100  100  051    Pre-fail  Always      -      0
  8 Seek_Time_Performance  0x0025  100  100  015    Pre-fail  Offline      -      9971
  9 Power_On_Hours          0x0032  097  097  000    Old_age  Always      -      14018
10 Spin_Retry_Count        0x0033  100  100  051    Pre-fail  Always      -      0
11 Calibration_Retry_Count 0x0012  100  100  000    Old_age  Always      -      2
12 Power_Cycle_Count      0x0032  100  100  000    Old_age  Always      -      66
13 Read_Soft_Error_Rate    0x000e  100  099  000    Old_age  Always      -      0
183 Runtime_Bad_Block      0x0032  100  100  000    Old_age  Always      -      0
184 End-to-End_Error        0x0033  100  100  099    Pre-fail  Always      -      0
187 Reported_Uncorrect      0x0032  100  100  000    Old_age  Always      -      85
188 Command_Timeout        0x0032  100  100  000    Old_age  Always      -      0
190 Airflow_Temperature_Cel 0x0022  084  065  000    Old_age  Always      -      16 (Min/Max 11/16)
194 Temperature_Celsius    0x0022  078  064  000    Old_age  Always      -      22 (Min/Max 11/22)
195 Hardware_ECC_Recovered  0x001a  100  100  000    Old_age  Always      -      2099
196 Reallocated_Event_Count 0x0032  100  100  000    Old_age  Always      -      0
197 Current_Pending_Sector  0x0012  100  100  000    Old_age  Always      -      0
198 Offline_Uncorrectable  0x0030  100  100  000    Old_age  Offline      -      0
199 UDMA_CRC_Error_Count    0x003e  100  100  000    Old_age  Always      -      0
200 Multi_Zone_Error_Rate  0x000a  100  100  000    Old_age  Always      -      2
201 Soft_Read_Error_Rate    0x000a  253  253  000    Old_age  Always      -      0
 
SMART Error Log Version: 1
No Errors Logged
 
SMART Self-test log structure revision number 0
Warning: ATA Specification requires self-test log structure revision number = 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline      Completed without error      00%    13880        -
# 2  Short offline      Aborted by host              00%    13879        -
# 3  Short offline      Aborted by host              00%    13878        -
# 4  Short offline      Aborted by host              00%    13877        -
# 5  Short offline      Aborted by host              00%    13876        -
# 6  Short offline      Aborted by host              00%    13875        -
# 7  Short offline      Aborted by host              00%    13874        -
# 8  Short offline      Aborted by host              00%    13873        -
# 9  Short offline      Aborted by host              00%    13872        -
 
Note: selective self-test log revision number (0) not 1 implies that no selective self-test has ever been run
SMART Selective self-test log data structure revision number 0
Note: revision number not 1 implies that no selective self-test has ever been run
SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
todd@ubuntu-test:~$ sudo smartctl -a /dev/sdc
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.5.0-23-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
 
=== START OF INFORMATION SECTION ===
Model Family:    SAMSUNG SpinPoint F1 DT
Device Model:    SAMSUNG HD753LJ
Serial Number:    S13UJDWQ601619
LU WWN Device Id: 5 0000f0 003066191
Firmware Version: 1AA01112
User Capacity:    750,156,374,016 bytes [750 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:  8
ATA Standard is:  ATA-8-ACS revision 3b
Local Time is:    Mon Jan  6 22:34:19 2014 EST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
 
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
 
General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                                        was never started.
                                        Auto Offline Data Collection: Disabled.
Self-test execution status:      (  0) The previous self-test routine completed
                                        without error or no self-test has ever
                                        been run.
Total time to complete Offline
data collection:                (11772) seconds.
Offline data collection
capabilities:                    (0x7b) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        Offline surface scan supported.
                                        Self-test supported.
                                        Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine
recommended polling time:        (  2) minutes.
Extended self-test routine
recommended polling time:        ( 197) minutes.
Conveyance self-test routine
recommended polling time:        (  21) minutes.
SCT capabilities:              (0x003f) SCT Status supported.
                                        SCT Error Recovery Control supported.
                                        SCT Feature Control supported.
                                        SCT Data Table supported.
 
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG    VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate    0x000f  099  099  051    Pre-fail  Always      -      218
  3 Spin_Up_Time            0x0007  067  067  011    Pre-fail  Always      -      10800
  4 Start_Stop_Count        0x0032  100  100  000    Old_age  Always      -      107
  5 Reallocated_Sector_Ct  0x0033  100  100  010    Pre-fail  Always      -      0
  7 Seek_Error_Rate        0x000f  100  100  051    Pre-fail  Always      -      0
  8 Seek_Time_Performance  0x0025  100  100  015    Pre-fail  Offline      -      9851
  9 Power_On_Hours          0x0032  097  097  000    Old_age  Always      -      14004
10 Spin_Retry_Count        0x0033  100  100  051    Pre-fail  Always      -      0
11 Calibration_Retry_Count 0x0012  100  100  000    Old_age  Always      -      3
12 Power_Cycle_Count      0x0032  100  100  000    Old_age  Always      -      73
13 Read_Soft_Error_Rate    0x000e  099  099  000    Old_age  Always      -      218
183 Runtime_Bad_Block      0x0032  100  100  000    Old_age  Always      -      0
184 End-to-End_Error        0x0033  100  100  099    Pre-fail  Always      -      0
187 Reported_Uncorrect      0x0032  100  100  000    Old_age  Always      -      218
188 Command_Timeout        0x0032  100  100  000    Old_age  Always      -      0
190 Airflow_Temperature_Cel 0x0022  085  066  000    Old_age  Always      -      15 (Min/Max 10/15)
194 Temperature_Celsius    0x0022  079  066  000    Old_age  Always      -      21 (Min/Max 10/21)
195 Hardware_ECC_Recovered  0x001a  100  100  000    Old_age  Always      -      21385
196 Reallocated_Event_Count 0x0032  100  100  000    Old_age  Always      -      0
197 Current_Pending_Sector  0x0012  100  100  000    Old_age  Always      -      0
198 Offline_Uncorrectable  0x0030  100  100  000    Old_age  Offline      -      0
199 UDMA_CRC_Error_Count    0x003e  100  100  000    Old_age  Always      -      0
200 Multi_Zone_Error_Rate  0x000a  100  100  000    Old_age  Always      -      0
201 Soft_Read_Error_Rate    0x000a  253  253  000    Old_age  Always      -      0
 
SMART Error Log Version: 1
No Errors Logged
 
SMART Self-test log structure revision number 0
Warning: ATA Specification requires self-test log structure revision number = 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline      Completed without error      00%    13866        -
# 2  Short offline      Aborted by host              00%    13865        -
# 3  Short offline      Aborted by host              00%    13864        -
# 4  Short offline      Aborted by host              00%    13863        -
# 5  Short offline      Aborted by host              00%    13862        -
# 6  Short offline      Aborted by host              00%    13861        -
# 7  Short offline      Aborted by host              00%    13860        -
# 8  Short offline      Aborted by host              00%    13859        -
# 9  Short offline      Aborted by host              00%    13858        -
 
Note: selective self-test log revision number (0) not 1 implies that no selective self-test has ever been run
SMART Selective self-test log data structure revision number 0
Note: revision number not 1 implies that no selective self-test has ever been run
SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
Well, but drives are showing non-zero values for 187 and 195. That worries me somewhat. It may show that there is a problem, but I'm along way from believeing it is likely.
You are right, if you were rebooting the VM and seeing the disks being trashed that's not likely. But, VMs have their own special kind of "fail" so it's not out of the woods. Unfortunately, whatever the cause is probably falls under the "not likely" category since I've never seen this kind of problem in almost 2 years here.