If you want to be convinced, which system is better, you can write some simple tests. For example, you can use a single SHA-256 on some numbers, to get sample hashes, just to have some representation of hashes submitted by miners.
SHA-256("0")=5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9
SHA-256("1")=6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b
Then, you can start from the simplest test: finding the strongest hash. You can run your code for a while, and see, what will happen, when you will accept the new hash only if it would be lower than the lowest one.
0 5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9
3 4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce
4 4b227777d4dd1fc61c6f884f48641d02b4d121d3fd328cb08b5531fcacdabf8a
8 2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3
9 19581e27de7ced00ff1ce50b2047e7a567c76b1cbaebabe5ef03f7c3017bb5b7
39 0b918943df0962bc7a1824c0555a389347b4febdc7cf9d1254406d80ce44e3f9
51 031b4af5197ec30a926f48cf40e11a7dbc470048a21e4003b7a3c07c5dab1baa
55 02d20bbd7e394ad5999a4cebabac9619732c343a4cac99470c03e23ba2bdc2bc
178 01d54579da446ae1e75cda808cd188438834fa6249b151269db0f9123c9ddc61
245 011af72a910ac4acf367eef9e6b761e0980842c30d4e9809840f4141d5163ede
286 00328ce57bbc14b33bd6695bc8eb32cdf2fb5f3a7d89ec14a42825e15d39df60
886 000f21ac06aceb9cdd0575e82d0d85fc39bed0a7a1d71970ba1641666a44f530
You can run such code for some time if you want to estimate your hashrate. Then, you can use a division to calculate the chainwork.
max=ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
chainwork(number)=SHA-256(number)/max
chainwork("0")=SHA-256("0")/ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
chainwork("0")=5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9/ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
chainwork("0")=2
Then, you can calculate chainwork for each hash you need:
0 5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9 2
3 4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce 3
4 4b227777d4dd1fc61c6f884f48641d02b4d121d3fd328cb08b5531fcacdabf8a 3
8 2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3 5
9 19581e27de7ced00ff1ce50b2047e7a567c76b1cbaebabe5ef03f7c3017bb5b7 10
39 0b918943df0962bc7a1824c0555a389347b4febdc7cf9d1254406d80ce44e3f9 22
51 031b4af5197ec30a926f48cf40e11a7dbc470048a21e4003b7a3c07c5dab1baa 82
55 02d20bbd7e394ad5999a4cebabac9619732c343a4cac99470c03e23ba2bdc2bc 90
178 01d54579da446ae1e75cda808cd188438834fa6249b151269db0f9123c9ddc61 139
245 011af72a910ac4acf367eef9e6b761e0980842c30d4e9809840f4141d5163ede 231
286 00328ce57bbc14b33bd6695bc8eb32cdf2fb5f3a7d89ec14a42825e15d39df60 1296
886 000f21ac06aceb9cdd0575e82d0d85fc39bed0a7a1d71970ba1641666a44f530 4331
Next, you need some way to create a history. You can for example use two hashes: one for the previous hash, and another for the hash of the current number you just computed. Then you will have any linked chain you want.
previous_hash=0000000000000000000000000000000000000000000000000000000000000000
first_hash=SHA-256("0")=5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9
genesis_hash=SHA-256(previous_hash||first_hash)=SHA-256(00000000000000000000000000000000000000000000000000000000000000005feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9)=30283b94911be7ecec5c6cfb40b36018249d60d688c496235052fd47a670522a
second_hash=SHA=256("1")=6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b
SHA=256(genesis_hash||second_hash)=308b33009d4aef160331f016f461513ac93bcd480bb55c79fc202fcf6a1aa549
And then you can compute the total chainwork for any chain. For example, if you assume that all numbers are hashed and chained in order, you will get this:
0 30283b94911be7ecec5c6cfb40b36018249d60d688c496235052fd47a670522a 5
1 308b33009d4aef160331f016f461513ac93bcd480bb55c79fc202fcf6a1aa549 10
2 6aec805e8653a6839375608419efd881cc429805a8a7a0212efc90137548296d 12
3 16c48be0dcce9070b93dc86d6d73d0b84a92319a2d57af72aebee109e64f27d1 23
4 c447e5ca45050ae1217dec0ba4574ddc28c7350a8d5e32feb90d2df76f23fe50 24
5 69b41d8016b2b5532e917b80754148c778407988a2356c1f37deef0c76cc127e 26
6 5d9ecaaaf47fe9c1a700edba6c169cc714deaece922071b19c2c401a573c09e9 28
7 acae5c0307380196010e2845d6a22cc45a4136c9ad5350abd6caa775cfed18f7 29
8 c0ff419b7d623bfa5c5bd53ae232997cb956fd8f0487b7edf46fb554a001b272 30
9 850f4cec71494934113cbdb9f5765b91d1b238cca767c3b98925cb56be4fabaa 31
At this point, you can trigger any rules related to chain reorganization. If there is only one miner, then there is nothing to compare with. So, you can assume that there are N miners present in the network, and each miner generates its own hashes. First, let's assume that each miner has similar computing power. You can just generate numbers as before, and take them modulo N, then the remainder equal to zero means the first miner, the remainder equal to one is for the second miner, and so on.
For two miners, it would mean the first miner will mine SHA-256("0"), and the second miner will mine SHA-256("1"), and each miner will try to extend the chain. First, you can assume that the previous block hash is zero, then calculate all hashes for all miners (here: two), and keep only the lowest hash. This is what would happen:
number=0, prev=0000000000000000000000000000000000000000000000000000000000000000, curr=30283b94911be7ecec5c6cfb40b36018249d60d688c496235052fd47a670522a
number=1, prev=0000000000000000000000000000000000000000000000000000000000000000, curr=801b2d87516b57e17cd0cba517103bda889e8beba95fa22bd334816ae45b1771
best=30283b94911be7ecec5c6cfb40b36018249d60d688c496235052fd47a670522a
number=2, prev=30283b94911be7ecec5c6cfb40b36018249d60d688c496235052fd47a670522a, curr=9e1138503e2d5f372fcaea0281ced20fcb9ef0691416561a4a22923c0e78bfba
number=3, prev=30283b94911be7ecec5c6cfb40b36018249d60d688c496235052fd47a670522a, curr=459fabbea886e1b92b975aa86de1e92d0369b4917134717823834fe6234b92fb
best=459fabbea886e1b92b975aa86de1e92d0369b4917134717823834fe6234b92fb
number=4, prev=459fabbea886e1b92b975aa86de1e92d0369b4917134717823834fe6234b92fb, curr=1fd79aaf345bf9dcfa9b2010b3a9c3dfeacaa7c0a197d855b099c1f1b2c2dcf9
number=5, prev=459fabbea886e1b92b975aa86de1e92d0369b4917134717823834fe6234b92fb, curr=e74ebcd238f81648e6ed077b787994772ddc589b962d68cc4f58d3055393c07a
best=1fd79aaf345bf9dcfa9b2010b3a9c3dfeacaa7c0a197d855b099c1f1b2c2dcf9
number=6, prev=1fd79aaf345bf9dcfa9b2010b3a9c3dfeacaa7c0a197d855b099c1f1b2c2dcf9, curr=3011fee40b1fd3e7bdf3cba24357fa2c72ce4beac7d23ce3a860cf97277c9f4d
number=7, prev=1fd79aaf345bf9dcfa9b2010b3a9c3dfeacaa7c0a197d855b099c1f1b2c2dcf9, curr=9ef582f8c255500bbb7cc9df6846678c4fdb73430ce9e8c2e8fb5dfdd00db211
best=3011fee40b1fd3e7bdf3cba24357fa2c72ce4beac7d23ce3a860cf97277c9f4d
number=8, prev=3011fee40b1fd3e7bdf3cba24357fa2c72ce4beac7d23ce3a860cf97277c9f4d, curr=9c49bce9d75cf932bbcb4025faadfeedd6e830733dfd87372524b30a2a3a8464
number=9, prev=3011fee40b1fd3e7bdf3cba24357fa2c72ce4beac7d23ce3a860cf97277c9f4d, curr=f7a148c0ceda210ca8e9f9e31dbca1c3af36b2a64e6f6628a2d2150800e26401
best=9c49bce9d75cf932bbcb4025faadfeedd6e830733dfd87372524b30a2a3a8464
However, to complete the whole picture, you need more than that. You need to compute the total chainwork, because it is not only about picking the best hash from one of the N miners. So, you start from the zero hash, and the zero chainwork, and always pick the hash that results in the highest total chainwork after adding such block to the chain.
number=0, prev=0000000000000000000000000000000000000000000000000000000000000000, curr=30283b94911be7ecec5c6cfb40b36018249d60d688c496235052fd47a670522a, work=5
number=1, prev=0000000000000000000000000000000000000000000000000000000000000000, curr=801b2d87516b57e17cd0cba517103bda889e8beba95fa22bd334816ae45b1771, work=1
best=30283b94911be7ecec5c6cfb40b36018249d60d688c496235052fd47a670522a
number=2, prev=30283b94911be7ecec5c6cfb40b36018249d60d688c496235052fd47a670522a, curr=9e1138503e2d5f372fcaea0281ced20fcb9ef0691416561a4a22923c0e78bfba, work=6
number=3, prev=30283b94911be7ecec5c6cfb40b36018249d60d688c496235052fd47a670522a, curr=459fabbea886e1b92b975aa86de1e92d0369b4917134717823834fe6234b92fb, work=8
best=459fabbea886e1b92b975aa86de1e92d0369b4917134717823834fe6234b92fb
number=4, prev=459fabbea886e1b92b975aa86de1e92d0369b4917134717823834fe6234b92fb, curr=1fd79aaf345bf9dcfa9b2010b3a9c3dfeacaa7c0a197d855b099c1f1b2c2dcf9, work=16
number=5, prev=459fabbea886e1b92b975aa86de1e92d0369b4917134717823834fe6234b92fb, curr=e74ebcd238f81648e6ed077b787994772ddc589b962d68cc4f58d3055393c07a, work=9
best=1fd79aaf345bf9dcfa9b2010b3a9c3dfeacaa7c0a197d855b099c1f1b2c2dcf9
number=6, prev=1fd79aaf345bf9dcfa9b2010b3a9c3dfeacaa7c0a197d855b099c1f1b2c2dcf9, curr=3011fee40b1fd3e7bdf3cba24357fa2c72ce4beac7d23ce3a860cf97277c9f4d, work=21
number=7, prev=1fd79aaf345bf9dcfa9b2010b3a9c3dfeacaa7c0a197d855b099c1f1b2c2dcf9, curr=9ef582f8c255500bbb7cc9df6846678c4fdb73430ce9e8c2e8fb5dfdd00db211, work=17
best=3011fee40b1fd3e7bdf3cba24357fa2c72ce4beac7d23ce3a860cf97277c9f4d
number=8, prev=3011fee40b1fd3e7bdf3cba24357fa2c72ce4beac7d23ce3a860cf97277c9f4d, curr=9c49bce9d75cf932bbcb4025faadfeedd6e830733dfd87372524b30a2a3a8464, work=22
number=9, prev=3011fee40b1fd3e7bdf3cba24357fa2c72ce4beac7d23ce3a860cf97277c9f4d, curr=f7a148c0ceda210ca8e9f9e31dbca1c3af36b2a64e6f6628a2d2150800e26401, work=22
best=9c49bce9d75cf932bbcb4025faadfeedd6e830733dfd87372524b30a2a3a8464
Here, things start to get interesting, because the total chainwork seems to be the same for both miners. In the current system, we would keep both branches, and wait for solving that by next blocks. However, in your proposal, the lower hash will be always picked in that case. In your version, it will be solved in this way:
number=10, prev=9c49bce9d75cf932bbcb4025faadfeedd6e830733dfd87372524b30a2a3a8464, curr=b8400b588f1712bf12752cb6935776c9cd439cafd28da485c0250bc6edb459a6, work=23
number=11, prev=9c49bce9d75cf932bbcb4025faadfeedd6e830733dfd87372524b30a2a3a8464, curr=ef50a88c600369eb17a50ebeb8b6939a87cf377afb8834cbf292ce74309c8a53, work=23
best=b8400b588f1712bf12752cb6935776c9cd439cafd28da485c0250bc6edb459a6
number=12, prev=b8400b588f1712bf12752cb6935776c9cd439cafd28da485c0250bc6edb459a6, curr=08df3ff63192c80b39ba86615671fdfadfbd62f0640e794093b0c6f81733b95e, work=51
number=13, prev=b8400b588f1712bf12752cb6935776c9cd439cafd28da485c0250bc6edb459a6, curr=d985028016122021a0910860ce796e18fbde4456bcb38d6901aee907fb2f64b5, work=24
best=08df3ff63192c80b39ba86615671fdfadfbd62f0640e794093b0c6f81733b95e
number=14, prev=08df3ff63192c80b39ba86615671fdfadfbd62f0640e794093b0c6f81733b95e, curr=19fc74c1b685ea3fd734df3d7c3b33d166cefbaa96e22ecc20e592c81563cb73, work=60
number=15, prev=08df3ff63192c80b39ba86615671fdfadfbd62f0640e794093b0c6f81733b95e, curr=7a99736b1f9f82bd5850f65b27959e970ca08d95e60859c5e8c23223400c4172, work=53
best=19fc74c1b685ea3fd734df3d7c3b33d166cefbaa96e22ecc20e592c81563cb73
After writing more code, we can see, what would happen on the alternative branch:
number=10, prev=f7a148c0ceda210ca8e9f9e31dbca1c3af36b2a64e6f6628a2d2150800e26401, curr=fe4732f0fa66063234d1a5b921fd352bf3bcefc579eb94e346b9b5f1543a507b, work=23
number=11, prev=f7a148c0ceda210ca8e9f9e31dbca1c3af36b2a64e6f6628a2d2150800e26401, curr=d483e6062e644bff9be1617cb3d7578e53de71cbf6b655a0768a7c4d88d9c256, work=23
best=fe4732f0fa66063234d1a5b921fd352bf3bcefc579eb94e346b9b5f1543a507b
number=12, prev=fe4732f0fa66063234d1a5b921fd352bf3bcefc579eb94e346b9b5f1543a507b, curr=9365d5dff92ba341e548a4e7647e4f42ae3d0a235ac8ba2f8c0854b774ddc61a, work=24
number=13, prev=fe4732f0fa66063234d1a5b921fd352bf3bcefc579eb94e346b9b5f1543a507b, curr=7d553d15194fbf46d6fc5671177006e6c2d72eaa8ce1693ffebaee420b756277, work=25
best=7d553d15194fbf46d6fc5671177006e6c2d72eaa8ce1693ffebaee420b756277
number=14, prev=7d553d15194fbf46d6fc5671177006e6c2d72eaa8ce1693ffebaee420b756277, curr=60522e578dcbe7d547c6233b03c6be75d75a200915124f025e829a616f080576, work=27
number=15, prev=7d553d15194fbf46d6fc5671177006e6c2d72eaa8ce1693ffebaee420b756277, curr=044dd08a991a0d2530d7687fbf5f9ab192a955ebe0432e08f666d95e4c50a4ac, work=84
best=044dd08a991a0d2530d7687fbf5f9ab192a955ebe0432e08f666d95e4c50a4ac
As you can see, after mining 16 blocks, you have chainwork equal to 60 on one branch, and 84 on another branch. After testing longer chains and different scenarios, where there would be some attacker, trying to endlessly mine the Genesis Block (or the earliest possible block after that), you would notice more unexpectedly low hashes. Because at first, it seems that picking the lowest hash is an obvious solution. But when you write more tests, then you will notice more attacks, and there is no reason to introduce them to the current system.
For example, even here, on some smaller numbers, you can see that it is possible to go from 25 to 84 chainwork. Every sometimes, some miner may hit such block, that will be the lowest block hash ever found. Statistically, it is inevitable, that if many miners are trying, then one of them may hit it, just because of how many hashes were checked by all miners.
Also, it is a good moment to open the whitepaper again, and read chapter 11 named "calculations". Because then, you can compare your attacking scenarios with those probabilities described in the whitepaper, and see, if the probability matches with reorgs you will see during your testing.