Silas was as well-cast as David was miscast
I think Silas was perfectly cast. The well-meaning, but ultimately wrong leader- temperamental, haunted, profane. I thought McShane played him perfectly.
David, on the other hand: the bible and countless old texts are filled with David and Goliath type stories with heroes like him. The reason why David is so pervasive in legend is because he was tragically flawed. He was a constant screw-up and a slave to his own bad habits. And despite this, he was the chosen one. That's what makes David such a compelling character and why people have always loved to relate to him- because he was all too human. Capt. Shepherd on the other hand just seems to be a completely innocent yokel, almost perfect except for his naivete, trying to be a good man amongst a see of bad people. And the only time he screws up is because he's trying to help someone else. And that's not interesting- it's not believable- it's completely apart from the original biblical character- and I think that absence of an interesting, relatable David is what ultimately did this show in.