You'll first need to have a physical connection between host A and B, i.e. both having an interface in the same layer-2 domain (e.g. same VLAN). You can use the interfaces that have the current public IP addresses, if they share the same L2 domain (I think they probably do as per your description)
Your ISP will route any traffic coming from Internet and directed to those IP addresses through host A, so host A has to route them to B. Enable IP forwarding on A, so when A gets the packet destined for any of the other 4 IPs, it will look for the destination in the local-link subnet (ARP resolution) and deliver it.
If A and B share a physical connection and the VMs in B are bridged to that interface, you can configure the IP addresses on the VMs and use A as your default gateway. The VM in host B will receive the traffic from A and return it to A too. As A is probably a stateless forwarder, you can change the VMs' default route to point to the egress router that A uses in the same subnet, so you optimize a bit the performance.
Edited to add: If your ISP router is not specifically routing those IPs down, then you might want to use proxy ARP to capture the requests and route them internally. However, without really knowing all the details it's hard to say what's the best approach in your case and why and how those IP addresses are "assigned" to host A. Maybe you just need to configure them on B and remove them from A? :)
I wouldn't recommend the above though :) You're increasing the points of failure for B (if A goes down, VMs in B go down too)
My recommendation is to talk to your ISP or whoever manages the router upstream and ask them to point the IP addresses to B.
If the requirement to use the public IP addresses is just cosmetic, then use some overlay networking provider that lets you use any addressing in the overlay network. This way you won't be able to route from Internet to those IP addresses though.