In some cases (e.g. elements that trigger JS events but aren't real links or buttons) an I-beam may appear. In these cases cursor: pointer; is quite beneficial, though cursor: default; (not the same as "auto") may be appropriate.
But the web != your OS. Many things that work and are expected on the desktop, such as double-clicking, right-clicking, and dragging, are considerably more rare online, where there are a different set of expectations and, as you mention, affordances.
Yes, but buttons are buttons wherever they are, and browsers even style them according to the OS theme. That's why I think they should be treated as buttons and not hyperlinks.
And the sad thing is that desktop applications are starting to do this too. The new Symantec Antivirus interface is all webby and slow (something else I don't like), and uses the hand for buttons. This makes me a sad panda.
Buttons already have quite good affordance.