I can confirm that player characters in both SoF and Titanium are showing bald (and probably incorrect beards, colors, etc.) since the in-game fix to SoF. This appears to be because of the old code that used to change zero values for appearance fields into 99. The characters still have 99 recorded in the fields in the database.
Uncommenting this block of code in worlddb.cpp fixes the problem:
worlddb.cpp - Line 90
Code:
//*
if (pp->face == 99) {cs->face[char_num] = 0;}
if (pp->eyecolor1 == 99) {cs->eyecolor1[char_num] = 0;}
if (pp->eyecolor2 == 99) {cs->eyecolor2[char_num] = 0;}
if (pp->hairstyle == 99) {cs->hairstyle[char_num] = 0;}
if (pp->haircolor == 99) {cs->haircolor[char_num] = 0;}
if (pp->beard == 99) {cs->beard[char_num] = 0;}
if (pp->beardcolor == 99) {cs->beardcolor[char_num] = 0;}
//*/
That will reverse the old 0 -> 99 code. Note that cs->hair[char_num] in the fourth line must be fixed to cs->hairstyle[char_num] for it to compile.
Alternatively, logging the bald character in and using the Face change feature to reset the affected appearance fields permanently fixes the problem.
I couldn't get beard colors to work in Titanium, but beard styles were fine. It's probably a matter of figuring out the correct field location for Titanium beard color in Spawn_Struct and CharSelect.
Also, I didn't see a problem with Arias in Gloomingdeep with Titanium. On my screen, he's a normal brown-haired male human with a moustache, wearing leather armor. He looks the same to me with the SoF client.