The thing I don't like about rebasing is if you are planning to do it you can't push your feature branches anywhere public otherwise someone could base some work on it and you get in trouble when you rebase and push the re-written history. So really you can only rebase stuff you haven't pushed anywhere.
It seems much simpler to me to branch off master to implement something. Push your branch if you want so others can see what you are doing and collaborate etc.
git checkout -b feature_branch
git push origin HEAD
If you're doing a significant chunk of work then every now and then:
git checkout master
git pull
gut checkout feature_branch
git merge master
Now your branch has any changes others push to master.
When you are done checkout master and make sure it's up to date again then:
git checkout master
git pull
git merge feature_branch
git push origin HEAD
So while your question is how to avoid merges perhaps my answer can inform you that you possibly don't need to do that...