Yeah, it was a problem with Bitcoin Block Explorer. Some blocks were not updated after a very large chain split (~8 blocks), which made the block chain wrong.
The large split was detected:
Tue, 12 Apr 2011 07:04:07 +0000
Starting block update: 13371 to 13377
BLOCK
Num: 13371$
Hash: 000000000c8b1c402c31fa803084aedf8b20d2f3f757bb3d6c47e42426516e2e$
Prev: 00000000111f7c4035234f6406c97a2983188fb5d7eb99b3d3a36e8daf5faf8b$
Root: 705d451e642b051ba98c132555ae84521436824b1dc68deb3e3fa4ae2f6d19d7$
Bits: 471724584$
Nonce: 762625496$
Timestamp: 1302591425$
Size: 215$
***Deleting conflicting block***INPUT
Type: Generation$
Value: 50$
Prev: $
TxHash: 705d451e642b051ba98c132555ae84521436824b1dc68deb3e3fa4ae2f6d19d7$
Index: $
ScriptSig: 0428f21d1c0104$
Hash160: $
OUTPUT
Hash160: c418e6c01bd8a9956af410c68297b37c8d1acb02$
Type: Pubkey$
Index: 0$
Value: 50.00000000$
Scriptpubkey: 0446fa90919dfe5305beb9a741bbc05f2864a72692822c147eb8e754c8211af2e0
7f9d2b5974c72140313d3162721d5e9c0854820c28ac4c7ee3c485bbdae2e4e6 OP_CHECKSIG$
Total value: 50.00000000$
Transactions: 1$
Error: Updating blocks too far back
BBE should have then turned itself off to prevent further damage. However, I haven't yet set up a system where only testnet can turn off, and previously testnet would take down mainnet, so I made testnet incapable of turning itself off. So it kept updating:
Tue, 12 Apr 2011 07:06:07 +0000
Starting block update: 13371 to 13378
BLOCK
Num: 13371$
Hash: 000000000c8b1c402c31fa803084aedf8b20d2f3f757bb3d6c47e42426516e2e$
Prev: 00000000111f7c4035234f6406c97a2983188fb5d7eb99b3d3a36e8daf5faf8b$
Root: 705d451e642b051ba98c132555ae84521436824b1dc68deb3e3fa4ae2f6d19d7$
Bits: 471724584$
Nonce: 762625496$
Timestamp: 1302591425$
Size: 215$
Already have this block
BLOCK
Num: 13372$
Hash: 00000000001212c841a0fe178666bb0f03cb16eda2d6cdc5917acbda01831f50$
Prev: 000000000c8b1c402c31fa803084aedf8b20d2f3f757bb3d6c47e42426516e2e$
Root: bf99ed83ed2f89f6e9d730f68c3f8d752f952422515e2a8c1daad2faf9551832$
Bits: 471724584$
Nonce: 2981433388$
Timestamp: 1302591435$
Size: 215$
***Deleting conflicting block***INPUT
Type: Generation$
Value: 50$
Prev: $
TxHash: bf99ed83ed2f89f6e9d730f68c3f8d752f952422515e2a8c1daad2faf9551832$
Index: $
ScriptSig: 0428f21d1c0108$
Hash160: $
OUTPUT
Hash160: a096f906cb7c73f5dabd57593ae7c3cc9ccae87b$
Type: Pubkey$
Index: 0$
Value: 50.00000000$
Scriptpubkey: 0480dad04b64362bd1217a5a812451963569e758c5084b2347aec9e1d85fc73b1d
e1f3f5bc784348a04f95b6b5afe6ac1438d06ce5e6b698fe39645fbb10c158ec OP_CHECKSIG$
...
A few blocks before 13371 were then wrong, but the later blocks were still being updated. This resulted in a block containing transactions that had previously appeared in the now-orphan blocks. These appeared to be duplicates to BBE, but they actually weren't.
The massive fee amount made me think it was a real exploit rather than just a BBE processing error, and this was corroborated by my analysis of BBE rawblock data, which was obviously also wrong.
Testnet now looks back 10 blocks, which should make this more rare. I've also been planning a more elegant update control system that will allow testnet to turn itself off without taking down mainnet.