Generally BLDCs aren't used if you need to zero out a shaft location. As you note, BLDC drivers usually treat the motor as a speed-controlled device rather than position controlled. They're also quite fast compared to steppers so you'll probably have to put the shaft through a gearbox if you want something less than thousands of RPM.
Is there any particular reason you want a BLDC as opposed to a stepper? If you do stick with a stepper, what's wrong with your current controller?
In terms of homing the shaft position, if you have a mechanical stop, you can just drive the motor open-loop until it slams into the stop. The other options are:
-adding a discrete input to sense the stop position
-using feedback current to look for a spike, implying that the shaft hit the stop (this isn't very reliable in general)
-count the number of BLDC phase transitions (also not really a reliable method for position control)