Definitely the contacts in the solenoid. The solenoid still pulls the drive out, but the contact disk, -or contact studs are not making contact (giving you that solid THUD of the drive kicking out, but no power to the starter motor). The studs that go into the solenoid cap are the contact points that the disk completes the circuit to the starter motor through, -and sometimes they "go away" also. The copper studs used to be available with nickel plated contacts, but my local rebuilder told me that he hasn't seen them available in a while. Do yourself a favor and just swap out the solenoid, -do not get the POS $35.00 solenoid that some sell, -the good one runs $60.00. I had a bad experience with a cheap solenoid, -I sure won't make that mistake again. Not to base things off price, (because I'm sure some a-hole is buying the POS one and charging $60 for it), but I went through TWO cheap ones before I settled on the more expensive one that my rebuilder recommended.
Also, -always keep the original nose housing on your starter if it is the original that came with your block, -you'll never need shims, -and you will have perfect gear mesh every time, (don't ask how I know that). I typically swap the guts over from the rebuilt unit, but I will not use the nose housing that came with the rebuild, because they hardly ever match up to the block.