Kastrati ha giocato nelle giovanili del Grei e successivamente nello Skeid. Con quest'ultimo club ha giocato 20 partite, con 6 reti all'attivo. Il 29 gennaio 2009 è stato ufficializzato il suo passaggio al Twente.[3] Non ha collezionato alcuna presenza ufficiale con il club olandese, pur andando in panchina nel corso di una gara in Eredivisie. Il 3 gennaio 2011 è stato ceduto in prestito all'Osnabrück.[4] Ha debuttato il 16 gennaio, nella sconfitta per 4-1 della sua squadra contro il Duisburg e Kastrati ha realizzato la rete della bandiera per la sua squadra.[5]
Il 1º agosto 2013 ha lasciato l'Erzgebirge Aue per lo Strømsgodset, a cui si è legato con un contratto di tre anni e mezzo.[6][7] Il 17 agosto 2016 è passato all'Aalesund, a cui si è legato con un contratto valido fino al termine della stagione.[8] Ha esordito in squadra il 21 agosto, schierato titolare nella sconfitta per 3-0 arrivata sul campo dello Stabæk.[9] Ha totalizzato 3 presenze in questa porzione di stagione con l'Aalesund, in cui è stato per lungo tempo infortunato.[10]
Il 13 dicembre 2016, il Sandefjord ha reso noto d'aver ingaggiato Kastrati, che si è legato al nuovo club con un contratto valido a partire dal 1º gennaio 2017.[10]
Il 10 agosto 2021, l'Odd ha reso noto d'aver ingaggiato Kastrati, che ha firmato un contratto fino al 31 dicembre 2023, valido dal successivo 1º settembre.[14] Il 13 agosto, le parti hanno raggiunto un accordo per anticipare il trasferimento, con Kastrati che si è legato immediatamente al nuovo club.[15]
Si è ritirato dal calcio professionistico al termine della stagione 2022.[16]
Nazionale
Kastrati ha debuttato per la Norvegia Under-21 il 17 novembre 2010, giocando da titolare nella sfida contro la Grecia.[17] La sua partita si è conclusa , però, a metà primo tempo: è stato infatti sostituito da Anders Ågnes Konradsen a causa di un infortunio.[17] Il 7 maggio 2013 è stato incluso nella lista provvisoria consegnata all'UEFA dal commissario tecnicoTor Ole Skullerud in vista del campionato europeo Under-21 2013.[18] Il 22 maggio, il suo nome è comparso tra i 23 calciatori scelti per la manifestazione.[19] La selezione norvegese ha superato la fase a gironi, per poi venire eliminata dalla Spagna in semifinale. In base al regolamento, la Norvegia ha ricevuto la medaglia di bronzo in ex aequo con l'Olanda, altra semifinalista battuta.[20]
Il 18 febbraio 2014 è stato convocato dal Kosovo per la partita amichevole contro Haiti.[21] Precedentemente, infatti, il giocatore aveva manifestato la volontà di rappresentare questa selezione.[21] Nel gennaio dello stesso anno, la FIFA aveva concesso al Kosovo il permesso di giocare partite amichevoli contro altre Nazionali affiliate, purché esse non provenissero dalla zona dell'ex Jugoslavia.[22] Il carattere amichevole degli incontri non precludeva quindi la possibilità di giocare per un'altra Nazionale per ogni calciatore coinvolto.[23] La gara del 5 marzo 2014 è terminata 0-0.[24]
Il 29 maggio 2016, il commissario tecnico del Kosovo Albert Bunjaku ha diramato le convocazioni per la prima partita riconosciuta da UEFA e FIFA della selezione balcanica, un'amichevole contro le Fær Øer: Rashani è stato incluso all'interno di questo elenco.[25] Il 3 giugno successivo, il giocatore ha effettuato il proprio esordio, subentrando ad Albert Bunjaku e contribuendo alla vittoria per 2-0 della Nazionale kosovara.[26]