Ok, I think I made some progress on this problem. I guess overlooked the tf_prefix thing somehow. It looks like both
fake_localization and gazebo_ros_diffdrive are not setup to use tf_prefix for their broadcasted transforms (odom and
base_footprint respectively). So I did modify them to use tf_prefix and looking at tf topic I see that everything is as
expected and I also don't get the warning about non-fully-qualified frame_ids.

The transform broadcaster is supposed to be resolving with the tf_prefix automatically -- if it's not that's likely a bug.
 

But then in rviz the robot_model can't be shown, since rviz tries to get transforms for frames that are taken from
robot_description parameter on param server and these are not prefixed. Is there something I am doing wrong?

You currently also need to set the tf_prefix parameter for rviz.  1.1 will contain a TF Prefix option for the Robot Model display that lets you view multiple robots at once.

Josh