Try dmv sys.dm_hadr_database_replica_states and just join them:
DECLARE @MyDate DATETIME = '21 March 2018';
WITH LastBackupCTE (DbName, BackupfinishDate)
AS
(
SELECT database_name,
MAX(backup_finish_date) AS BackupFinishDate
FROM msdb.dbo.backupset bs
inner join msdb.dbo.backupmediafamily bmf
on bs.media_set_id = bmf.media_set_id
WHERE type = 'D' -- database backup.
GROUP BY database_name
)
SELECT d.name
FROM sys.databases d
left outer join sys.dm_hadr_database_replica_states ha on d.database_id=ha.database_id
LEFT OUTER JOIN LastBackupCTE f
ON d.name = f.DbName
WHERE (
f.BackupFinishDate IS NULL -- never backedup
OR
F.BackupFinishDate < @MyDate
)
AND d.name not in ('tempdb', 'ReportServerTempDb', 'pubs','northwind', 'AdventureWorks')
AND d.state_desc = 'ONLINE' and (ha.is_primary_replica=1 or ha.is_primary_replica is null)
--AND (sys.fn_hadr_is_primary_replica(d.name)) = 1
order BY d.name;