From a FreeBSD point of view:
1st choice: Chelsio
2nd choice: Mellanox
3rd choice: Intel
Chelsio has the best driver support and even SR-IOV "just works"™. They are a tad more expensive than Mellanox, but the T520 based models are still dirt cheap. Th 6th generation cards which are also 25G capable are still more expensive (but usually still way under 100$), but relatively uncommon in europe, i.e. harder to find as used parts and usually very expensive from EU sellers.
Mellanox Cx3 and 4 can be found dirt cheap everywhere as white-label variants from china. For homelab/non-critical systems those are perfectly fine (I never had one of those 'white box' NICs or even HBAs fail) and can be found below 30$. Their drivers also 'just work'™, but SR-IOV is currently buggy for Cx3 (had it running a year ago, so it seems to be a regression and might be fixed soon).
To switch between ethernet and infiniband you don't have to fiddle around with firmware like on linux - just load the specific driver (mlx4en or mlx4ib) and the card runs in the respective mode. You can even switch at runtime by unloading the one and loading the other kernel driver.
Intel drivers are also quite 'uneventful' (except for SR-IOV), but Intel cards are the most picky ones when it comes to transceivers and the failure modes they show with off-brand transceivers are quite annoying to say the least... i.e. they sometimes seem to work, until the NIC (or one port) just vanishes after a reboot. Hard to diagnose, especially due to the fact that it "sometimes seem to work" e.g. after switching the transceivers around. You *need* to put intel-coded transceivers in them to have them work reliably. Chelsio and Mellanox absolutely don't care what transceivers you throw at them, they just work...
Regarding 2.5Gbps: thats not part of the SFP+ standard (just as all copper transceivers because they have way too high power draw), so you need transceivers that handle the negotiation and fake a 10G link to the SFP port.