Answer: many of the functions defined in windows.h are actually macros that resolve to some related name with a suffix. So windows.h gets very unhappy if you try to redefine its macros, but it works fine to undefined them afterward:
#include <windows.h>
#include <mmsystem.h>
#undef GetCursor
Worked like a charm.