You can't say you have a good personality, and then follow that with how shy you are.
Here's the simple truth - Shy people are a pain in the ass. They are no fun.
It is true that for some guys (many guys in fact) personality can trump looks. But don't lie to yourself that you have a great personality. You're shy. That means you are a pain.
You're a pain to talk to. You are a pain to get to know. Trying to get you to come out of your self-imposed shell, is a huge effort. And when anyone does it, they find that thanks to your years of shyness, you have all the social skills of a mollusc.
That's the truth. It has nothing to do with your looks.
Stop blaming things you can't change, like your face, and accept responsibility for what you CAN change. Your personality.
When guys do this - (blame the things they can't change, like their height or their penis size) we rightly call them on their bullsh*t.
So I'm doing that here, for you. Don't bullsh*t yourself. Shy girls are a f***ing pain in our ass.
Looks well always matter more than personality. This matters for both genders, and for the most part, the people that say they care more about personality are people that are failing in the looks department themselves. Real world.
There are guys who do go for personality over looks, but these can't do that if they don't know you. Strangers will only see superficial things, because they have nothing else to judge you by.
Firstly, you probably aren't as 'ugly' as you think you are. Everyone's worst critic is themselves, and low self esteem is a bit of a downward spiral. It's very difficult to break out of those kinds of negative thoughts, and view yourself more positively. Even if you don't love your face, try to focus on the other good things about you. You say you have a good body, can dress well and do your hair nicely to feel a bit more confident in your appearance.
Secondly, don't feel your looks prevent you from having male friends. In purely friendship terms, that matter for nothing. Do you ever judge you female friends value based on their looks? It's what's inside that matters to friends, and friendship can develop into something more (if you feel your personality is better than looks, you've got to let people get to know you) Try to make friends with guys your existing friends know. Just friendships, and see where it goes from there. I'm sure once they get to know you, and you feel comfortable around them, it'll work out.
The secret to attractiveness is confidence. Men love a confident woman...when a woman's confidence shows (not arrogance!) then men are drawn. You say you have a very nice body start by feeling confident about that; the way you think about yourself. Feel sexy, act sexy. Why not try something like Burlesque dance classes which really help to make you feel sexy and it shows! Don't compare yourself to others - sexiness comes in ALL shapes, sizes and guises :)