I have attached the execution plan from the slow performing server, and from one of the quicker performing servers. (the query plans for the 2 quicker performing servers live and test are exactly the same).
See the slightly modified query below:
SELECT "view_1_alias"."Title"
, "view_1_alias"."Surname"
, "view_1_alias"."Known As"
, "view_1_alias"."Gender"
, "view_1_alias"."Start Date"
, "view_1_alias"."Leaving Date"
, "view_1_alias"."Post Name"
, "view_1_alias"."Category"
, "view_1_alias"."Key Unit Name 1"
, "view_1_alias"."Cost To"
, "view_1_alias"."FTE"
, "view_2_alias"."Grade Name"
, "view_1_alias"."Payroll Name"
FROM "DB1"."Schema1"."VIEW_1" "view_1_alias"
INNER JOIN "DB1"."Schema2"."VIEW_2" "view_2_alias"
ON ((view_1_alias."Person Number"=view_2_alias."Person Number")
AND (view_1_alias."Appointment Number"=view_2_alias."Appointment Number"))
AND (view_1_alias."Career Number"=view_2_alias."Career Number")
WHERE (view_1_alias."Start Date"<{ts '2013-06-30 12:55:40'}
AND view_1_alias."Leaving Date" IS NULL
AND view_1_alias."Payroll Name"=N'Payroll'
OR view_1_alias."Start Date"<{ts '2013-06-30 12:55:40'}
AND view_1_alias."Leaving Date">={ts '2013-06-01 12:55:36'}
AND view_1_alias."Payroll Name"=N'Payroll')