I think a lot of the reason why Dru and Spike held on to a little bit of their humanity - and why Angel did not - is because of what they were when they were humans. Angel said something like that to Willow in 'Doppelganger' (and that was proved when Willow ended up gay, like her Evil! Willow self in the alternate dimension]. Spike was a sensitive [albeit bloody] poet, a romantic and a little bit of a Mama's boy. Drusilla was [in Angel's own words] a pure, clean, innocent girl who wanted to be good, a 'bride' of Christ. Angel, however, was a useless layabout, thief and womanizer. Their dominant personalities translated into their un-lives. Spike remaining essentially a romantic; Drusilla, keen on her dolls and children, despite her love for Spike she'd rather be a 'bride' to her Sire [even though she's never quite forgotten what he did to her before he turned her]; Angel, a sadist.
In many ways, I count Spike as more worthy of redemption than Angel was. I think this was touched on a little in the Angel Season 5 when they met up with each other. Angel's soul was restored with a curse. Angelus, the vampire, did not and would never had asked for his soul. Spike 'earned' his soul and was already half-way to redemption before he got it. One could almost say that the soul was just a formality. He was already more human than some of the living people on the show. I had always hoped he would 'become' human in the end. The ghost Spike was a dissapointment.