That sounds like a pretty good summary to me. I don't think we currently have a third option. (I think option 2 is pretty straightforward, but you're right that there's a potential for merge conflicts.)
We do have infrastructure for project files, which can be used to specify a set of options and targets, but it's marked experimental and there's no bazel implementation right now. We've also considered supporting rules specifying options for their dependencies, but it's both difficult to implement, and difficult to ensure it doesn't exponentially explode the amount of work bazel has to do.