I haven't ever used this myself, but Leaflet.FileLayer sounds like it would let you convert from KML to GeoJSON on the client without involving a server.
From there you could use Esri's geojson-utils to convert from GeoJSON to Esri geometries. Graphics from those geometries could then be added to the map.