A has his problems, and I'm not sure that I'd hire him...
but here's something to think about:
If you hire A, the next person that you interview will see A and think "there are geniuses here".
If you hire B, the next person that you interview will see B and think "there are mediocre players here".
Of course, there's a third option: defer hiring until you find the perfect guy.
I will note that I once hired a guy so good that on his first day I knew he'd be leaving soon. He stuck around for a year and left. I don't blame him - he got a much better deal - one so good that I couldn't match it. I got a ton of great work out of him in that year though, so I'm still glad I did it.
but here's something to think about:
If you hire A, the next person that you interview will see A and think "there are geniuses here".
If you hire B, the next person that you interview will see B and think "there are mediocre players here".
Of course, there's a third option: defer hiring until you find the perfect guy.
I will note that I once hired a guy so good that on his first day I knew he'd be leaving soon. He stuck around for a year and left. I don't blame him - he got a much better deal - one so good that I couldn't match it. I got a ton of great work out of him in that year though, so I'm still glad I did it.