How many machines are we talking about here? Too many to manually assign static values for IPv4 on all?
Since the APIPA solution doesn't seem to be working reliably for you, I would suggest maybe adopting your own IP schema to resolve your issues.
Try testing one XP machine and the Win7 machine using something like
192.168.2.2 and 192.169.2.3 respectively
both with a subnet mask of 255.255.255.0 (class C)
default gateway 192.168.1.254 (not a real default gateway, just an unused ip address on the subnet which may help Win7 locking as unidentified)
Then see if you can ping from one to the other by IP and then by NetBIOS name.
The upside of this technique is speed and reliability, you're in control and you know what IP belongs to which computer and accessing shares by IP address should overcome any issues with DNS or WINS/NetBIOS name resolution.
\\192.168.2.2\ShareName should work dependably.
If you are using Windows 7 Professional or above you can use the Group Policy editor to set how windows 7 handles unidentified networks. See attachment.
Type gpedit.msc into the search or run dialog box and hit enter
Expand Computer Configuration
Expand Windows Settings
Expand Security Settings
Select Network List Manger Polices
In the right pane double click Unidentified Networks
Select Private
Select User can change location
OK your way back out of there and reboot.
See if that helps
If you are running Windows Home Premium or below the Local Group Policy Editor will not be available to you.