You should be able to compensate with a thicker head gasket, but it may be easier to go with the shorter pistons because raising the head moves the combustion chamber up and lowers the compression ratio back down (more or less a zero sum gain). Slightly longer stroke but that's not necessarily going to return much for potential headache. BMW engineers these things to give as much as possible, it gets very tricky and expensive to get more. You might be better off sticking to OEM specs and adding a turbo or supercharger. Just depends on how much time you want to spend, 100's of hours trying to make a better NA motor, or 20-30 to add some external compression to the engine. In the end, what's your time worth?
Cams and heads, port and polish, more lift on the valves, and at least a three angle valve job. More flow=More power. You can get gains by a simple head job and leave the bottom end completely untouched. But again, bear in mind BMW designs these things to be as good as they can be while at the same time running reliably for 100's of thousands of miles. If it was Chevy 350 there are TONS of things you can do (engine was designed like crap from the word go). Most German engines, not so much. They're pretty well built from the beginning.