Best Practice For Data Views with Linked Server in SQL Server
In my experience, the round-robin joins on both legs of the query certainly make for an expensive plan.  It depends on a few issues, but consider using these options to help you:


Use a temporary or a work table on Server A named #DataTable_ServerB_local to store the results from Server B.
If possible create a stored procedure Prepare_Datatable_ServerB_Data on Server B that you can call remotely to get the Server B data. This may join back to Server A to get some data.
UseOPENQUERY to execute the Remote Stored Procedure Prepare_Datatable_ServerB_Data  to insert its data into Server A's #DataTable_ServerB_local. The code internal to the stored procedure would join back to the local server to get what I suspect are the relatively few rows that it needs.
Join DataView_ServerA with #DataTable_ServerB_local which are now both on Server A to provide the final result.


This strategy assumes that Server B joining back to Server A is the smaller set of joins.  (If this is not the case then you will need to switch directions with this strategy.)

The whole point of this approach is to:


Limit the number of rows passing between the servers.
Avoid as many joins across the linked servers as possible.
To the extent possible (e.g. the Prepare_Datatable_ServerB_Data procedure) process data on the server where the data is stored.  


Big joins across a linked server can be very expensive in terms of time and the optimizer may not be able to make good decisions.