The problem is, that there may only be one route for 169.254.0.0/16. So if there is more than one interface the route will probably already exist on the first interface.
The solution is not to set a new route if the route exists on any interface (not only the given one).
To fix this problem:
In /etc/network/if-up.d/avahi-autoipd
look for
[ "`ip route show dev $IFACE | grep ^169.254.0.0/16`" ] && exit 0
(should be line 23)
and replace this line with
[ "`ip route show | grep ^169.254.0.0/16`" ] && exit 0
The problem is, that there may only be one route for 169.254.0.0/16. So if there is more than one interface the route will probably already exist on the first interface.
The solution is not to set a new route if the route exists on any interface (not only the given one).
To fix this problem:
In /etc/network/ if-up.d/ avahi-autoipd
look for
[ "`ip route show dev $IFACE | grep ^169.254.0.0/16`" ] && exit 0
(should be line 23)
and replace this line with
[ "`ip route show | grep ^169.254.0.0/16`" ] && exit 0