If you really want to go lighter for mac learning, you can use bgp-evpn, you'll have 0 learning flood. (because arp/np are filtered, and mac address are pushed to the differents hosts bridge through the bgp protocol)
About multicast, it's the older than unicast implementation, and it's was the only mode support by linux kernel < 3.9.
But it don't scale well, because you need 1 multicast group fo each vxlan id.
(and a lot of physical switches have a limited number of multicast groups)
about openstack:
https://wiki.openstack.org/wiki/L2population_blueprint#Handling_VXLAN_with_multicast
"
As explained earlier, multicast-based VXLAN is not really a feature as it wont scale, but it would anyway be necessary to support it for two puposes:
Some networks may have to be interconnected with 3rd party appliances which uses multicast-based VXLAN. For that puporse, having the ability to specify a multicast group as an extended provider attribute could be a good solution. To support broadcast emulation in pre-3.9 linux kernel VXLAN implementation, we’ll have to rely on multicast. For that purpose, providing the multicast group as an agent configuration parameter as proposed in vxlan-linuxbridge blueprint could provide a good migration path, as this option could be removed once all the agents support edge replication for broadcast emulation.
As OVS VXLAN implementation doesn’t support multicast for now, one solution could be to use iptables rules to map a virtual tunnel IP to a multicast address:"