I believe one elegant solution would be to use the role_paths configuration setting - IF you could specify a path that was relative to the playbook_dir. However, as far as I can tell, these paths need to be absolute, or they are relative to the directory from which ansible was invoked.
For example the relative path in the roles_path directory would cause at least one of the following cases to fail:
1. Ansible-playbook /a/b/c/pb.yml
2. Ansible-playbook /x/pb.yml
where the actual directory names are irrelevant, only the depth matters.
I think the real question is in what cases would current ansible code break if the relative role_paths were defined to be relative to the playbook_dir?