You are right, Select-Object -Unique and Get-Unique seems to both select unique entries based on ProcessName.
To select unique entries based on only Id you could use this:
$a | Sort-Object -Property Id -Unique
If you want to select unique entries based on multiple values you would have to select all properties you want to use like this:
$a | Select-Object 'Handles', 'NPM', 'PM', 'WS', 'VM', 'CPU', 'Id', 'ProcessName' -Unique