1. Yes regardless of whether it's a b2b or b2c
2. Yes. Purchase an item for a gift to be shipped to someone else. Hence billing/shipping are different.
It's not a good idea to create extra fields for such rare case. And this can be solved by a comment.
4. Amazon is probably easiest. They support a variety of payment methods (which relate to multiple billing addresses for a registered user) and a variety of ship-to addresses. So it's a many-many relationship. They use the last-selected as the default for the current order but it's easily changed via radio buttons and/or "new" for both shipping and billing (actually they call it payment method but most require at least a zipcode).
Any payment method other than CC probably requires full billing/shipping address info where CC probably just requires CC. However, Square will use billing zipcode in addition to zipcode entered with card data to more fully detect fraudulent activity..
I did not find billing address on Amazon. Only multiple shipping profiles. If you can provide me with screen that would help.