You should move to a switch.
Hubs operate using a shared bus technology. This means that bandwidth throughout the device is shared. If you have a ten port 100Mb hub and connected 10 computers to it, each computer would have roughly 10Mb of bandwidth that it could utilize. In real world situations, computers simply take up as much bandwidth as they can. Thus, bandwidth fluctuates. For Windows XP, this fluctuation causes the QoS to go crazy so to speak.
Switches operate using a dedicated bus technology. This means that bandwidth over a switch is dedicated per port. If you had a 10 port 100Mb switch and connected 10 computers to it, each PC would have a dedicated 100Mb connection. Since bandwidth is dedicated, not shared, the QoS simply dedicates the bandwidth to the correct amount. Thus, file transfers operate at their optimum speeds.
Hubs were originally designed to be multiport repeaters. A repeater is a device that extends data transfer longer than the 100m/300ft mark over cat5 ethernet.
The reason you are getting so many collisions is because of how hubs operate. When you send something through a port on a hub, it gets sent back out throughout all the ports, including the port that it was sent from. Switches, on the other hand, switch information over the ports based on the computer's MAC address. If you send data from PC A (MAC ABCD) to PC B (MAC DCBA), the switch will look up the port number to where PC B's MAC address is. It will then send the packet through that port and that port only.