You asked for help, I suggest one, you don't like it.
Like I said, it could be the Mii.
You added mii to database
It also do that with retail disc
the game launched but fails AFTER the health and safety screen, but BEFORE selecting a savegame/license, exactly when it probably tries to access the Mii database and fails.
Factory resetting the Wii also reset the Mii database.
Everything you said has a common element... guess which one?
you see the relation here?
having done it hundreds time without problem is not a reference to tell nothing can ever go wrong!
a lot of people install wad to NAND without bricking... until they do.
It's just an idea to debug things :
see if launching Mii maker works. You added it directly to database with a homebrew and didn't thought it would be a good idea to see if it were properly imported?
If the database is corrupted and miimaker can't launches, we got the problem.
if Miimaker launches without problem, no harm trying to remove last added mii anyway! "just to test".
delete the added mii
try again.
If the database is faulty, miimaker should have an option to reset (delete every miis)
if not, use SavegameGX or restore a previous backup (SGX should allow that, right?) if not, use ftpii to write a backup to NAND. (shared2\menu\FaceLib)
Attention, resetting the Mii database or having a corrupted Mii database will also prevent loading some games : Wii Sports and Metroid Prime 3 are tested and reported affected games, and probably Mario kart/CTGP which uses Mii as "driving license". they need your "Mii" after the health screen for that reason, it needs to load and display it!
Always make a backup of facelib file before editing it! if you never did a manual backup using SavegameGX, maybe one day you used emuNAND and dumped nand? look there for backup.
before doing a full factory reset, try to find the problem and a direct solution. even if it's not what I think, at least you would have tried and we could confirm "my idea was not the problem". knowing it's not that is better than not knowing and never having the answer whether it could help future users with the same issue or not.