Got it working with help from this blog post and here.
The solution was to add the classes I wanted to shim explicitly in the System.fakes file. This is what mine looks like now:
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="System" Version="4.0.0.0"/>
<ShimGeneration>
<Clear/>
<Add FullName="System.Net.Sockets.TcpClient"/>
<Remove Obsolete="1"/>
</ShimGeneration>
</Fakes>
The Remove Obsolete="1"
is to stop errors from being thrown by the Shim generation code when it attempts to shim [Obsolete] code.