I've read that Juju uses zookeeper. I assume zookeeper runs on the bootstrap node? Is there any way to use a pre-existing zookeeper cluster? Similarly, is there a way to have juju bootstrap launch a cluster instead of a single node?
No (for two reasons):
Existing ZK cluster would be straightforward to support (esp. in light of zk chroot support)
Use its own zk cluster, is definitely on the roadmap as part of juju's HA story for itself. The key part of this will be restructuring the zk cluster such that its managed as just another service by the juju cli.